gdbserver和远程gdb (即通过SSH)有什么不同?它们为什么共存?Unix哲学建议,软件应该做好一件事,即调试本地程序。在我看来,gdb违反了这个原则,除了做另外一件事--与gdbserver交互。
发布于 2021-09-14 13:39:56
gdbserver比GDB小,依赖性更小,因此可以在资源受限的系统上运行,这样GDB本身就无法运行。或者,由于其他原因,GDB无法运行,例如目标平台没有Python,您希望使用GDB的一些Python特性。
其次,目标平台可能与主机平台(运行GDB的主机平台)不同,但与此相关,也许为一个小目标编译GDB、Python、语法高亮库等等并不是您想要的时间,而是您可以编译gdbserver,然后在本地计算机上运行GDB。
最后,尽管gdbserver本身很有用,但它也是测试GDB的远程串行协议支持的有用机制。此协议记录在GDB手册中,允许gdbserver以外的软件与GDB交互,例如OpenOCD和QEMU,它们都支持GDB的远程协议,这使得GDB可以调试GDB和gdbserver都无法运行的裸金属目标。
您正确地注意到,这基本上意味着GDB有两种调试方法,一种是本地目标支持,另一种是远程目标支持。如果我们想在思想上保持纯正,那么我们可以(理论上)从GDB中删除本机目标支持,并在所有情况下使用gdbserver,也就是说,当您尝试在本地机器上调试程序时,GDB将自动启动gdbserver,连接到它,并通过该接口进行调试。不过,我不指望很快就能看到这种变化。
https://stackoverflow.com/questions/69176457
复制相似问题