GDB 调试

2018-10-26  本文已影响0人  林海畅游

1.GDB 调试的应用场景

前提:在编译时加入-g选项,把调试信息加到可执行文件中,例如g++ -g hello.cpp –o hello或是在CMakeLists.txt文件的编译参数中加入-g,常见的应用如下:

1.1 调试binary --- 可执行文件

binary文件必须以debug形式编译,cmake -DCMAKE_BUILD_TYPE=Debug ..

gdb ./test(可执行文件)后进入gdb模式,常见命令如下:    
 设置断点:
b function(在function函数入口处设置断点)
b number(在第number行设置断点)
b (在当前行设置断点)
layout 多窗口查看相应信息:https://blog.csdn.net/zhangjs0322/article/details/10152279
layout src 查看源码
layout reg:查看寄存器信息
单步(finish跳出):
n (next)下一步,逐过程  n 3 下行三步
s (step)进函数,逐步
c 直接跳到下一个断点处
run 运行程序
p (print)  变量名/地址
bt 或者where ( 查看当前函数堆栈)
quit 退出gdb模式
调试带参数的程序:
gdb binary进入gdb模式后,set args -i input.txt -o output.txt 然后输入r,如果想在
某处中段则b number或者函数,然后输入r 即可执行
如果有输入参数,例如cat input.data | ./test -c business.ini -t default -v 123 
[1] set args -c business.ini -t default -v 123 < input.data
[2] gdb test --> r -c business.int -t default -v 123 < input.data

2. core调试

gdb data_center_consumer core文件
根据打出的core日志定位:addr2line -e ./data_center_consumer -i 0x5ab35f


TimLine图片20190117191726.png
上一篇 下一篇

猜你喜欢

热点阅读