目标:尝试执行代码演练,了解通过网络发送和接收数据包所调用的函数。
我正在构建内核并使用gdb进行调试/跟踪。
我使用以下命令构建了一个vm:
time sudo ubuntu-vm-builder qemu precise --arch 'amd64' --mem '1024' --rootsize '4096' --swapsize '1024' --kernel-flavour 'generic' --hostname 'ubuntu' --components 'main' --name 'Bob' --user 'ubuntu' --pass 'ubuntu' --bridge 'br0' --libvirt 'qemu:///system'
我可以使用以下命令在qemu中成功运行VM:
qemu-system-x86_64 -smp 1 -drive file=tmpGgEOzK.qcow2 "$@" -net nic -net user -serial stdio -redir tcp:2222::22
现在,我想使用gdb调试内核。为此,我需要一个带有调试符号(vmlinux)的可执行文件,这显然是我没有的,因为vm-builder从未要求任何此类选项,只是创建了一个.qcow2文件。
问题1:我采取了正确的方法来解决问题并且有更简单的方法吗?
问题2:有没有办法使用GDB调试这个内核?
P.S:我没有KVM的硬件支持。
如果我错了,请纠正我。
感谢。