我正在尝试调试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显示源代码吗?
我正在尝试调试segfault,但是似乎某些常见的gdb命令无法按预期工作。如果执行以下操作:gdb ./executable_name Break main run list我收到以下错误:(...
在问上述问题之前,我应该多看一些。上面的可执行文件不是在调试模式下构建的。我正在使用ROS
和catkin
,因此在包目录中使用catkin build -DCMAKE_BUILD_TYPE=Debug
解决了该问题。
默认情况下,GDB使用list命令的任何这些形式打印十个源代码行。您可以使用set listsize更改此设置: