一、說明
在上家公司第一次聽說”交叉編譯“,但開發機環境配置一直沒成功,后來也就不了了之了,所以一直不太懂”交叉編譯“具體實現上是怎么個形式。
Python在Windows上和Linux上是有些差別的,在Windows上運行得好的程序在Linux上不一定沒有問題,而在Windows開發好代碼再傳到Linux上運行、配合print()函數進行調試是一件很麻煩的事。
這次就來研究一下Python遠程調試如何實現,順便理解gdb等遠程調試的形式。為了方便索性將其他一些調試形式全記錄在這里。
二、Windows圖形界面IDE調試
當使用PyCharm等IDE進行調試時,直接使用在文件上右鍵,然后選擇Debug ‘xxx’即可。這就不多說了。
可以看到PyCharm使用的是pydevd
三、Linux命令行調試實現
在命令行模式下,我們可以在程序中使用pdb.set_trace()實現類似下斷點的操作,然后使用pdb運行程序在其交互shell中使用命令實現單步步過等調試操作。
(其實就觀察來看,直接使用"python test.py"運行,當發現文件中有pdb.set_trace()時一樣會以調試模式運行;這兩者有一些感覺有一些還不是很確定的小差別,反正一種用着有毛病就換另一種。)
可在交互shell中使用“help”查看pdb支持的所有命令,可以使用“help command”進一下查看具體命令的作用。還可以直接查看官方文檔。幾個常用的命令如下:
s(tep)--單步步入
n(ext)--單步步過
c(ont(inue))--執行到下一斷點處
l(ist)--打印當前語句上下文
p expression--打印變量值
q(uit)--退出
exit--退出
四、Windows+Linux遠程開發調試實現
我們首先要明確,遠程開發一定是將本地項目、傳到遠程機器、使用遠程上的解析器執行。
所以我們要做的事,一是要實現將本地項目上傳到遠程機器,二是將遠程機器上的解析器信息(如安裝了哪些庫)和程序執行輸出等下載回本地。
一方面這些工作通過sftp等統一的一個協議就可以實現,另一方面在配置遠程解析器時必需要設置遠程解析器,所以整個工作在操作上就可歸結為配置一個遠程解析器一件事情。
前置條件:本地機器IDE需要是商業版本社區版不提供遠程開發支持;遠程機器開啟ssh服務、確認用戶可ssh、安裝好python等。
第一步:打開要在遠程機器上調試的項目。或者新建一個項目先隨便選一個本地的解析器作為項目解析器。
第二步:通過菜單--setting,或者Ctrl+Alt+s快捷鍵呼出項目配置面板。
第三步:切換到Project--Project Interpreter,按如下操作添加遠程解析器。
左側切換到SSH Interpreter選項卡,右側填好自己遠程機器的ssh信息。
設置好ssh憑證,可以是密碼和密鑰兩種形式。我這里為了簡便直接使用密碼形式。
Interpreter----要使用的遠程機器python解析器所在路徑。默認是/usr/bin/python,可以改成自己安裝的。
Execute code using .. sudo----使用sudo執行python命令。如果遠程機器sudo需要輸入密碼那這種方式不好使。
Sync folders----項目上傳到的文件夾。
Automatically upload ... ----每次運行程序前,如果文件有變更,則自動將文件同步到遠程機器。強烈建議勾選。
執行結果如下,本地項目成功上傳到遠程機器上,並能正常運行、調試。
參考: