gdb调试

前期准备

  • 一般来说GDB主要调试的是C/C++的程序。在gdb调试之前,必须要把调试信息加到可执行文件中。使用编译 器(cc/gcc/g++)的 -g 参数可以做到这一点。如:
gcc -g hello.c -o hello 
g++ -g hello.cpp -o hello 
  • 如果没有-g,将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。

启动 gdb 有三种方式:

  • gdb program是可执行程序。
  • gdb core
    用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。
  • gdb -p 通过top得到要调试程序的pid,然后进行调试。

参数

GDB启动时,可以加上一些GDB的启动开关,详细的开关可以用gdb -help查看。常用的参数:

-symbols <file> 
-s <file> 
从指定文件中读取符号表。 

-se file 
从指定文件中读取符号表信息,并把他用在可执行文件中。 

-core <file> 
-c <file> 
调试时core dump的core文件。 

-directory <directory> 
-d <directory> 
加入一个源文件的搜索路径。默认搜索路径是环境变量中PATH所定义的路径。

当以gdb 方式启动gdb后,gdb会在PATH路径和当前目录中搜索的源文件 。 如要确认gdb是否读到源文件,可使用l或list命令,看看gdb是否能列出源代码。

运行时。可以设置下面四方面的事。

  • 程序运行参数。
    set args 可指定运行时参数(也可以指定配置文件)。(如:set args 10 20 30 40 50)
    show args 命令可以查看设置好的运行参数。
  • 运行环境。
    path 可设定程序的运行路径。
    show paths 查看程序的运行路径。
    set environment varname [=value] 设置环境变量。如:set env USER=hchen
    show environment [varname] 查看环境变量。
  • 工作目录。
    cd 相当于shell的cd命令。
    pwd 显示当前的所在目录。
  • 程序的输入输出。
    info terminal 显示你程序用到的终端的模式。
    使用重定向控制程序输出。如:run > outfile
    tty命令可以指写输入输出的终端设备。如:tty /dev/ttyb

具体来说就是
例如一个程序名为prog 参数为 -l a -C abc
则,运行

gcc/g++ -g  prog.c/cpp -o prog

就可以用gdb调试程序prog

gdb prog

进入gdb调试界面
输入参数命令set args 后面加上程序所要用的参数,注意,不再带有程序名,直接加参数,如:

set args -l a -C abc

回车后输入
r
即可开始

原文链接: https://www.cnblogs.com/xiaohaigegede/p/14782726.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    gdb调试

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/210659

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午12:26
下一篇 2023年2月13日 上午12:26

相关推荐