我如何自动在gdb中继续断点

时间:2013-03-28 14:27:35

标签: linux debugging gdb kernel breakpoints

我正在调试我的linux内核模块。它导致死锁,我正试图弄清楚如何。我正在使用vmware + gdb。我们的想法是挂钩函数并将logtrace记录到文件中。我正在尝试以下方法:

(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则可行。有没有办法在每次调用函数时记录信息?

谢谢。

2 个答案:

答案 0 :(得分:1)

很可能你正在点击gdb分页提示。 https://sourceware.org/gdb/onlinedocs/gdb/Screen-Size.html

在设置断点

之前运行此命令
set height 0

答案 1 :(得分:0)

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

通常这种事情很好。将“继续”放入断点命令是我多年来经常做的事情。它并非没有问题(它会干扰“下一步”),但如果您只是在进行日志记录等,那么它的效果很好。

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

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