我正在尝试调试segfault,但一些常见的gdb
命令似乎无法按预期工作。如果我执行以下操作:
gdb ./executable_name
break main
run
list
我得到以下错误:
(gdb) list
1 <built-in>: No such file or directory.
类似地,如果我让程序运行到分段故障,然后尝试使用检查堆栈中的特定帧
bt
up
list
我得到了一个类似但更短的错误:
(gdb) list
1 in <built-in>
我以前在其他基于Ubuntu的系统上使用过GDB,没有遇到过这样的问题,所以我认为我仍然需要在我的系统上正确设置GDB,这样它就知道在哪里可以查找可执行文件的相应源代码。有人知道我如何在调试时使用list
命令让GDB显示源代码吗?
在问上述问题之前,我应该多看一看。上述可执行文件不是在调试模式下生成的。我使用的是ROS
和catkin
,所以在包目录中使用catkin build -DCMAKE_BUILD_TYPE=Debug
解决了这个问题。