在 c 或 c++ 中调试核心转储时,即,如果我们留下一个核心转储文件并尝试使用该核心文件进行调试,是否有一种方法可以在转储发生之前查看最后几行代码。仅堆栈跟踪显示函数调用。
例如:在 dbx 或 gdb list 命令中调试正在运行的进程期间
list Display lines of a source file
将给出当前正在执行的部分代码。以同样的方式,我们在查看核心转储时是否可以选择?我正在开发solaris mdb
gdb 中的list
命令应提供源代码行号的详细信息以及核心文件中的相应源列表,如果:
-g
在 gcc 和 g++ 中)strip
)即使无法找到源文件,调试器仍应该能够提供文件和行号,因为行号信息构成调试符号的一部分。此信息应可通过bt
(回溯)命令以及info symbol
命令获得。
请注意,即使核心文件是从剥离的可执行文件生成的,只要您有权访问非剥离版本,您就可以在 gdb 中加载它并指定核心文件。
查看gdb 手册的第 13 章和第 15 章,以帮助 gdb 访问您的源文件。
如果您use
在 dbx 中使用命令正确设置了源路径或使用-I
选项启动它,那么在读取源代码行时调试核心转储和正常进程之间几乎没有任何区别。
如果使用 -g 选项编译,则可以显示源代码行。在 dbx 中,您可以使用use
命令来设置 dbx 源目录。
您可以使用list
(l) 命令显示源代码行。
请参阅help
命令以了解如何使用 dbx 和 gdb 命令。