2.11 使用VisualGDB调试
# 2.11.1 VisualGDB介绍
VisualGDB是一款Visual Studio插件,安装以后可以在Windows系统上利用Visual Studio中调试远程的Linux程序,这样的好处就是可以利用Visual Studio强大代码阅读和调试功能阅读、调试Linux程序。可能有读者会说,从Visual Studio 2015开始,Visual Studio不是自带了调试Linux程序的功能嘛,为什么还要再装一款插件舍近而求远呢。很遗憾的是,经笔者测试Visual Studio 2015或者2017自带的调试Linux程序的功能很鸡肋,调试一些简单的Linux小程序还可以,调试复杂的或者多个源文件的Linux程序就力不从心了。VisualGDB是一款功能强大的商业软件,其官方网站是链接11。VisualGDB本质上是利用SSH协议连接到远程Linux机器上,然后利用Visual Studio产生相应的gdb命令通过远程机器上的gdbserver传递给远程的gdb调试器,而代码阅读功能是建立在samba文件服务器之上。
VisualGDB 官网:
https://visualgdb.com/ (opens new window)
官网提供了 30 天试用版,网上流传了一个破解版:
链接: https://pan.baidu.com/s/1UvhkbbqZ-W8uNUrLmA1zNw 提取码: 3cec
如果需要,请购买正版。
利用这个工具远程调试Linux程序的方法有两种:
# 2.11.2 利用 VisualGDB 调试已经运行的程序
如果一个Linux程序已经运行,可以使用VisualGDB的远程attach功能。为了演示方便,我们将Linux机器上的redis-server运行起来:
[root@localhost src]# ./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.3 利用VisualGDB从头调试程序
更多的时候,我们需要从一个程序启动处(main函数处)开始调试程序,如学习redis的源码。利用VisualGDB也是很方便的。在Visual Studio的**【DEBUG】菜单选择【Quick Debug With GDB】**菜单项。
在弹出的对话框中配置好Linux程序所在的地址和目录:
点击Debug按钮,就可以启动调试了。
我们的程序会自动停在main函数处,这样我们就能利用强大的Visual Studio对redis-server进行调试了。当然读者也可以在VisualGDB 提供的GDB Session窗口直接输入gdb的原始命令进行调试。
当然,工具都不是完美的。VisualGDB也存在一些缺点,用这款工具调试Linux程序时可能会存在卡顿、延迟等现象。