2.11 使用VisualGDB调试
VisualGDB是一款 Visual Studio 插件,安装以后可以在 Windows 系统上使用 Visual Studio调试远程Linux程序,这样做的好处就是可以利用Visual Studio强大的代码阅读和调试功能。可能有读者会说,从Visual Studio 2015开始,Visual Studio不是已经自带调试Linux程序的功能了么?很遗憾,Visual Studio 2015或者2017自带的调试Linux程序的功能很鸡肋,调试一些简单的Linux小程序还可以,调试复杂的或者有多个源文件的Linux程序就难了。VisualGDB 是一款功能强大的商业软件,在本质上是利用 SSH 协议连接到远程Linux机器,然后利用Visual Studio产生相应的gdb命令,通过远程机器上的gdbserver传递给远程gdb调试器。其代码阅读功能建立在samba文件服务器之上。
使用这个工具远程调试Linux程序的方法有两种,下面一一进行讲解。
2.11.1 使用VisualGDB调试已经运行的程序
如果一个Linux程序已经运行,则可以使用VisualGDB的远程attach功能。为了方便演示,我们将Linux机器上的redis-server运行起来:
安装好VisualGDB插件以后,我们在Visual Studio的Tools菜单中选择Linux Source Cache Manager菜单项,将弹出如下对话框。
单击Add按钮,配置需要调试的Linux程序所在的Linux机器地址、用户名和密码。
然后在Debug菜单中选择Attach to Process...菜单项,将弹出Attach To Process对话框,对Transport类型选“VisualGDB”,对Qualifier选择我们刚才配置的Linux主机信息。如果连接没问题,则在下面的进程列表中会弹出远程主机的进程列表,选择刚才启动的redis-server,然后单击Attach按钮。
这样就可以在Visual Studio中调试这个Linux进程了。
2.11.2 使用VisualGDB从头调试程序
更多的时候,我们需要从一个程序启动处(main函数处)调试程序,例如学习Redis源码时使用VisualGDB也是很方便的。在Visual Studio的DEBUG菜单中选择Quick Debug With GDB菜单项,在弹出的对话框中配置Linux程序所在的地址和目录。
再单击图中Debug按钮,就可以启动调试了。
我们的程序会自动停在main函数处,这样就能利用强大的Visual Studio对redis-server进行调试了。当然,也可以在 VisualGDB提供的 GDB Session窗口中直接输入 gdb的原始命令进行调试。
在VisualGDB中也存在一些缺点,调试Linux程序时可能会存在卡顿、延迟等现象。