GDB C++ debug

cmakelist添加Debug

SET(CMAKE_BUILD_TYPE “Debug”)
SET(CMAKE_CXX_FLAGS_DEBUG “ E N V C X X F L A G S − O 0 − W a l l − g 2 − g g d b " ) S E T ( C M A K E C X X F L A G S R E L E A S E " ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb") SET(CMAKE_CXX_FLAGS_RELEASE " ENVCXXFLAGSO0Wallg2ggdb")SET(CMAKECXXFLAGSRELEASE"ENV{CXXFLAGS} -O3 -Wall”)

gdb查看内存数据

格式: x /nfu

说明:
x 是 examine 的缩写,意思是检查。

n表示要显示的内存单元的个数,比如:20

f表示显示方式, 可取如下值:

x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
i 指令地址格式
c 按字符格式显示变量。
f 按浮点数格式显示变量。

b表示单字节,
h表示双字节,
w表示四字节,
g表示八字节
x /20xh 0x7fffffffe080

GDB调试技巧

要调试已经启动的进程,或是调试陷入死循环而无法返回控制台的进程时,可以使用 attach 命令。格式:attach
gdb 和进程分离时使用 detach 命令,调试的进程就从 gdb 的控制下释放出来。进程被 detach 后继续运行。进程信息可以用 info proc 命令显示。
  守护者进程在启动好子进程后,会自动关闭主进程,如果没有设定监控模式的话,gdb 会提示断开与进程的链接。所以必须设定监控对象,设置命令为 set follow-fork-mode child/parent。

gdb debug

gdb ./myprog

Here are some basic commands to get you going:

b lineno - set a break point at line ‘lineno’
b srcfile:lineno - set a break point in source file ‘srcfile’ at line ‘lineno’
r - run the program
s - step through the next line of code
c - continue execution up to the next breakpoint
p varname - print the value of the variable ‘varname’

在这里插入图片描述

cuda-debug

在这里插入图片描述

查看debug信息。

readelf -S libxxx.so |grep debug

参考文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值