使用VisualStudio調試Linux程序

用Visual Studio調試linux程序?你真的沒看錯,這個是真的,不是標題黨。當然如果你說VS2015及以上版本自帶的linux調試插件,那就算了。這些自帶的插件調試一個有簡單的main函數程序還湊合,稍微複雜點的程序,根本無法編譯調試。

而本文介紹的主角是VS的另外一款插件Visual GDB,讓我們歡迎主角登場,下面是正文。

使用Visual Studio+VisualGDB調試遠程linux程序

需要工具:

  1. Visual Studio 2013或以上版本(以下簡稱VS)

  2. VisualGDB(一款VS插件,官網為:http://visualgdb.com/)

  3. 含有調試符號的linux程序文件(該程序文件為調試目標)

  4. Visual Assistant(番茄助手,另外一款VS插件)

在VS上安裝完VisualGDB插件以後,有如下幾種方式來對遠程linux機器上的程序進行調試:

  • 方法一

    如果該程序已經啟動,則可以使用VS菜單【Debug】->【Attach to Process...】。

使用VisualStudio調試Linux程序

使用VisualStudio調試Linux程序

使用VisualStudio調試Linux程序

這種方法有個缺點是,不能從開始啟動的main函數處添加斷點,自始至終地調試程序,查看完整程序運行脈絡,所以下面推薦方法二。

  • 方法二

    利用VS啟動遠程linux機器上一個linux程序文件進行調試。選擇VS菜單【Debug】 ->【Quick Debugwith GDB】。

使用VisualStudio調試Linux程序

需要注意的地方,已經在上圖中標紅框。這裡簡單地解釋一下:

如果你安裝了交叉編譯環境Target可以選擇MinGW/Cygwin,否則就選擇遠程linux系統。這裡如果不存在一個ssh連接,則需要創建一個。

Debugged program是需要設置的被調試程序的路徑,位於遠程linux機器上。

Arguments是該調試程序需要設置的命令行參數,如果被調試程序不需要命令行參數可以不設置。

Working directory是被調試程序運行的工作目錄。

另外建議勾選上Initial breakpoint in main,這樣啟動調試時,程序就會停在程序入口處。

這樣,我們就可以利用VS強大的功能去查看程序的各種狀態了,常用的面板,如【內存】【線程】【觀察】【堆棧】【GDB Session】【斷點】等窗口位於VS 菜單【Debug】->【Windows】菜單下,注意,有些窗口只有在調試狀態下才可見。這裡有兩個值得強調一下的功能是:

  1. GDB Session窗口,在這個窗口裡面可以像原來直接使用gdb調試一樣輸入gdb指令來進行調試。

使用VisualStudio調試Linux程序

  1. SSH console窗口,這個窗口類似一個遠程操作linux系統的應用程序如xshell、SecureCRT。

使用VisualStudio調試Linux程序

現在還剩下一個問題,就是我們雖然在調試時可視化地遠程查看一個linux進程的狀態信息,但很多類型的定義和什麼卻無法看到。解決這個問題的方法就是你可以先在VS裡面建立一個工程,導入你要調試的程序的源代碼目錄。然後利用方法一或者方法二去啟動調試程序。這個時候你想查看某個類型的定義或什麼只要利用Visual Assit的查看源碼功能即可,快捷鍵是Alt + G。

使用VisualStudio調試Linux程序

需要注意的時:同時安裝了Visual Assist和VisualGDB後,後者也會提供一個go按鈕去查找源碼定義,但這個功能遠不如Visual Assist按鈕好用,我們可以禁用掉它來使用Visual Assist的Go功能。禁用方法,打開菜單:【Tools】->【Option...】:

使用VisualStudio調試Linux程序

然後重啟VS即可。

到這裡,既可以查看源碼,也可以調試程序了。


分享到:


相關文章: