码迷,mamicode.com
首页 > 数据库 > 详细

gdb调试

时间:2021-05-24 15:31:37      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:g++   搜索路径   symbol   ram   源文件   一个   一点   文件的   val   

前期准备

  • 一般来说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
即可开始

gdb调试

标签:g++   搜索路径   symbol   ram   源文件   一个   一点   文件的   val   

原文地址:https://www.cnblogs.com/xiaohaigegede/p/14782726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!