2

我正在调试我的 linux 内核模块。它会导致死锁,我正试图弄清楚如何。我正在使用vmware+ 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它。每次调用函数时有没有办法记录信息?

谢谢你。

4

2 回答 2

1

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

在设置断点之前运行它

set height 0
于 2016-09-15T07:03:56.633 回答
0

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

通常这种事情可以正常工作。将“继续”放入断点的命令中是我多年来经常做的事情。它并非没有问题(它会干扰“下一步”),但如果你只是在做日志记录等,它会很好用。

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

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

于 2013-10-11T04:10:03.930 回答