当前位置:   article > 正文

基于linux系统下程序调试---gdb调试_gdb(gnu debugger)是gcc的调试工具。其功能强大,现描述如下

gdb(gnu debugger)是gcc的调试工具。其功能强大,现描述如下

1、GDB介绍

GDB(GNU Debugger)是GCC的调试工具。其功能强大,现描述如下: 

  • 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 
  • 可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 
  • 当程序被停住时,可以检查此时你的程序中所发生的事。 
  • 动态的改变你程序的执行环境。

2、编译

如果要用GDB调试程序我们必须在编译时要把调试信息加到可执行文件中,在利用编译器(cc/gcc/g++)编译程序时加上 -g 参数

gcc -g HelloWorld.c -o HelloWorld

g++ -g HelloWorld.cpp -o HelloWorld

如果没有-g参数,你将看不见程序的函数名、变量名,而全是运行时的内存地址。

3、GDB 的启动命令

命令

命令缩写

命令说明

list

l

显示多行源代码

break

b

设置断点,程序运行到断点的位置会停下来

info

i

描述程序的状态

run

r

开始运行程序

display

disp

跟踪查看某个变量,每次停下来都显示它的值

step

s

执行下一条语句,如果该语句为函数调用,则进入函数执行其中的第一条语句

next

n

执行下一条语句,如果该语句为函数调用,不会进入函数内部执行(即不会一步步地调试函数内部语句)

print

p

打印内部变量值

continue

c

继续程序的运行,直到遇到下一个断点

set var name=v

设置变量的值

start

st

开始执行程序,在main函数的第一条语句前面停下来

file

装入需要调试的程序

kill

k

终止正在调试的程序

watch

监视变量值的变化

backtrace

bt

产看函数调用信息(堆栈)

frame

f

查看栈帧

quit

q

退出GDB环境

4、启动带参数的程序

gdb --args ./demo arg1 arg2....

5、基本应用

  • gdb 调试多线程1
  1. (gdb) info threads                      ->可以列出所有的线程,当前的线程前面有一个*号
  2. (gdb)thread ID                           ->把当前线程设成ID,然后就可以查看相关信息
  3. (gdb)bt                                       ->将列出栈的调用情况,以及对应源代码中的位置,此时谨慎察看对应代码,一般必有结果

6、 gdb XXXX core.18164

      bt

注意:使用gdb必须运行:ulimit -c unlimited

推荐一个详细的“GDB调试命令详解”地址希望可以学的更多:

1、https://blog.csdn.net/Linux7985/article/details/52399439

2、https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/gdb.html

扩展:

  1. linux提示符
  2. 1. GDB进入正在运行的进程
  3. gdb 可执行文件 core文件
  4. gdb -p pid
  5. GDB提示符
  6. 1. 查看调用栈信息
  7. bt / backtrace / bt full
  8. frame n
  9. info locals
  10. info args
  11. 2. 查看、设置变量
  12. p 变量
  13. p 变量 = 新值
  14. set 变量 = 新值
  15. 3. 查看内存
  16. x/<n/f/u> <addr>
  17. 4. 线程调试
  18. info thread
  19. thread n
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/288085
推荐阅读
相关标签
  

闽ICP备14008679号