程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

動態調試python源碼的步驟與案例

編輯:Python

1. 引入

python的c語言版本的源碼cpython可以從github中下載到(見參考1)。

那如何運行調試這個源碼呢?

2. 調試cpython的步驟

筆者在 Windows 10 上用Visual Studio Community2019進行調試,步驟如下:

  1. 下載cpython源碼,筆者從參考2中下載了python3.10.4的源碼

  2. 雙擊(用Visual Studio)打開源碼目錄PCbuild/pcbuild.sln文件

  3. VS中設置為Debug,Win32模式

  4. 在Solution,右鍵,選擇properties,選擇Configuration Properties,選擇Configuration,如何選擇Build只選python和pythoncore,具體如下圖所示

  5. 然後直接運行debug即可進行調試。運行後得到的界面和直接運行python命令得到的界面完全一樣,如下圖所示:

3. 簡單調試案例

我們知道,在python shell中,輸入一條語句後,會執行得到結果,然後再輸入另一條語句也執行得到結果,像是一個死循環一樣可以一直輸入、執行。那這個過程在源碼中是怎麼樣的呢?

  1. 首先找到main函數所在,根據VS的Startup Project(黑色字體)可以找到,C語言的main函數比特於Program/python.c中
  2. 從main函數進入,加上斷點,單步調試,就能進入到Python/pythonrun.c,如下會簡化後的源碼,詳見參考3
int _PyRun_InteractiveLoopObject()
{

do {
//在這個循環中,運行交互式語句
ret = PyRun_InteractiveOneObjectEx(fp, filename, flags);
} while (ret != E_EOF);
return err;
}

4. 總結

在Windows 10 上用Visual Studio Community2019,可以調試python源碼,python源碼也自帶了適合VS開打的.sln文件,很方便調試。

參考

  1. https://github.com/python/cpython
  2. https://github.com/python/cpython/releases/tag/v3.10.4
  3. https://github.com/python/cpython/blob/8a0d9a6bb77a72cd8b9ece01b7c1163fff28029a/Python/pythonrun.c#L136

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved