2013-03-28 24 views
2

我正在调试我的linux内核模块。它会导致僵局,我试图弄清楚如何。我正在使用vmware + gdb。这个想法是钩住函数并将回溯记录到文件中。我正在尝试以下操作:如何在gdb中自动继续断点

(gdb) br _raw_spin_lock 
Breakpoint 5 at 0xffffffff815eb700: file kernel/spinlock.c, line 136. 
(gdb) commands 5 
Type commands for breakpoint(s) 5, one per line. 
End with a line saying just "end". 
>silent 
>bt 
>continue 
>end 

continue在此处不起作用。如果我将bt替换为echo 1它可以工作。每次调用函数时都可以记录信息吗?

谢谢。

+0

之前,你有没有看这里[GDB持续和步进(http://www.chemie.fu-berlin.de/chemnet/use/info/ gdb/gdb_6.html#SEC37) – Satish

+0

在我的情况下不起作用 – milo

回答

0

你不会说为什么它不起作用。究竟出了什么问题?

通常情况下这种工作正常。将“继续”放入断点的命令是我多年来经常做的事情。这不是没有问题(它干扰“下一个”),但如果你只是做伐木或类似的事情,它的效果很好。

一个猜测是“bt”失败并出现错误。这将导致命令中止,并且我相信,劣势在于停止在断点处。那么问题是,发出了什么确切的错误信息?或者你正在打印分页。或者,也许还有一些其他的东西,我没有想到:-)

如果这是一个错误,一个可能的选择可能是限制回溯。

+0

按照预期(在Fedora 25上的GDB 7.12.1),可以确认'bt'在断点命令列表中运行后'继续'。其他断点命令有一些限制 - 例如像'finish'这样的命令会结束命令列表的执行。 – maxschlepzig