我最近使用qemu + gdb设置了内核调试系统。目前,我可以在__do_page_fault()
处设置断点,并通过gdb
跟踪调用(使用win
命令)。现在我想要以下任务:一个简单的C
程序,其中包含“hello world
”printf
语句。跟踪从用户空间开始到write()
系统调用(或在执行特定用户空间程序期间调用的内核空间中的任何内容)的调用序列。我想了解用户空间程序如何陷入系统调用w.r.t Linux内核。
现在我怀疑是在哪里设置断点?我们有内核代码以及程序的C
代码。如何解决这种情况?请举例说明。
谢谢!
答案 0 :(得分:1)
在我看来,最简单的方法是将其分为两部分。
P.S。 如果你的内核将持续命中断点(f.e. write syscall肯定被广泛使用),你可以使用条件断点来仅在传递了某些参数的情况下命中断点。