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