开发调试工具
文章平均质量分 59
开发和调试工具的使用
loongknown
凡是过往,皆为序章。
展开
-
gdb调试小技巧:设置数组、容器和字符串元素的打印个数
gdb调试小技巧:设置数组、容器和字符串元素的打印个数在使用gdb调试的时候,遇到打印数组(array)、容器(vector)和字符串(string)等遇到元素打印不全的问题:gdb默认只会打印200个元素,我们当然可以通过下面的方法继续打印剩余元素:p array[index]@num但更直接的方法是修改默认的打印元素个数:如果我们想修改打印更多或者全部元素个数,可以通过 “set print elements number-of-elements”、"set print elements原创 2023-02-18 08:47:47 · 1867 阅读 · 0 评论 -
GNU 工具链调试信息分离和挂载:支持 GDB 调试 RELEASE 版本程序
GNU调试信息分离&GDB加载调试信息一般地,release版本的程序都不带调试信息,无法使用gdb调试。GNU 编译工具链和二进制工具链做法如下:gcc/g++ 使用 -g 编译得到目标程序:gcc hello.c -gobjcopy 复制目标程序中的调试信息:objcopy --only-keep-debug a.out a.debugstrip 去除目标程序中的调试信息: strip --strip-unneeded --strip-debug a.outgdb 调试目标程序时加原创 2022-04-23 08:05:34 · 5476 阅读 · 0 评论 -
记一个奇怪的gcc编译优化:-ftree-vrp
记一个奇怪的gcc编译优化:-ftree-vrp原创 2023-01-14 09:53:43 · 3326 阅读 · 2 评论 -
gdb 调试技巧:定位程序卡死问题
程序卡住不退处,当然我这里的例子使用ctrl-c信号可以让程序退出,而我实际的程序是这里会卡死。不过这不是重点,重点是怎么知道程序卡死(或卡住)在哪里呢?当然这个简单的例子,你直接review代码就能看出,或者简单加几个printf就能定位出卡死的位置。遇到程序卡死不退处,可能不知道卡死在什么地方,如果程序非常简单,也许printf大法就可以很快定位。但是对于大型程序,尤其是一些框架程序,printf大法可能就力不从心了。最近遇到一个程序卡死的问题,借助gdb轻松定位,供大家参考。...原创 2022-07-16 09:50:35 · 9956 阅读 · 1 评论 -
内存问题检查工具——Address Sanitizer(ASAN)
ASAN工具使用介绍原创 2022-12-31 08:45:57 · 4379 阅读 · 1 评论