天天看點

使用slickedit調試開源代碼

slickedit linux下的神器啊!

閱讀代碼堪比 source insight,調試代碼堪比 visual studio。

nginx優秀的web伺服器。

因為其具有多程序、背景程序的特點,是以本文選擇以此為例講解slickedit如何對開源代碼進行調試。

一、調試環境

ubuntu 14.04 + slickedit pro 2016 + nginx 1.7.9

二、編譯nginx

對nginx完成一次編譯,開源軟體的套路一般都是 ./configure --xxx=xxx 後生成makefile,然後make即可。

注意這裡生成的makefile很關鍵,後面slickedit啟動調試後會用到。

配置要使用debug版本,不同的開源軟體配置也不一樣。一般都是:不使用優化選項、不使用strip、加-g選項。

如果調試過程中,代碼行亂跳一般都是打開了優化選項。

三、建立工程

選擇使用者自定義makefile,其他根據向導完成即可。并導入nginx源碼。

菜單 project->project properties...

注意 這裡有很多東西可以配置。

使用slickedit調試開源代碼

四、調試配置

雖然slickedit提供了界面進行配置,但是時靈時不靈的,很讓人頭疼。具體原因也沒有查明。

但是通過其工程的配置檔案卻很好使。

在我們建立的工程目錄裡有一個*.vpj檔案,我這裡是nginx.vpj。

修改方法如下:

使用slickedit調試開源代碼

到了這一步,我們終于可以啟動調試了。F9加斷點、F5啟動調試,快捷鍵的配置和vs基本一直。

啟動後的效果如下:

使用slickedit調試開源代碼

在build視窗(view->tool window->build)可以看到其執行過程

1、進入源碼路徑 執行了make。是以nginx要提前配置好生成makefile,否則這裡就會提示找不到makefile。

      cd /work/sdb/opensrc/nginx/nginx-1.7.9

2、啟動調試指令。 

     /opt/slickedit-pro2016/bin/vsdebugio -port 8001  -prog

     /work/sdb/opensrc/nginx/bin/sbin/nginx -c   /work/sdb/opensrc/nginx/bin/conf/nginx.conf

這個2個關鍵的指令我們在第四步進行了配置。

如果啟動不成功,也可以根據這裡的提示資訊,進行問題的解決。

使用slickedit調試開源代碼

五、調試子程序

slickedit 預設是進入主程序進行調試,對于nginx這種多程序的模式,如果想要調試子程序,可以通過指令行進行修改。

slickedit封裝了gdb,支援gdb所有的指令。

滑鼠單擊slickedit的底部就可是輸入指令:debug_send_command set follow-fork-mode child

debug_send_command 是slickedit的指令

set follow-fork-mode child 是gdb指令

如下圖:

使用slickedit調試開源代碼

六、調試運作中程序

菜單 debug->attach debugger->attach to ranning process (gdb)...

配置如下:

使用slickedit調試開源代碼

點選ok,slickedit就attach到nginx work process這個程序了。

補充一點:

如果建立的slicedit工程,和makefile檔案不在同一目錄,還需修改

*.vpj檔案中 Name="Build" 欄目下的 RunFromDir字段 該路徑包含我們項目的makefile檔案。

也就是說當按下F5進行調試時,先執行了build欄目下的指令,再執行debug欄目的下的指令。

使用slickedit調試開源代碼

全文完。

繼續閱讀