gdb調試python


一、概述

  1. 確認你的gdb版本是>=7,gdb從版本7開始支持對Python的debug

  2.確認gdb連接的Python是所要debug的Python,否則請重新編譯gdb。

1 $ gdb
2 (gdb) python
3 > import sys
4 >print sys.version
5 >end
6 2.4.3 ( #1, Sep 21 2011, 19:55:41) 
7 [GCC 4.1.2 20080704 (Red Hat 4.1.2-51)]

  編譯時注意,要把自己編譯的Python路徑加到PATH環境變量里,這樣gdb configure的時候才會找到新版Python並連接

   3.下載libpython.py

三、開始debug

  1、假設要debug的進程號為1000

     $gdb  -p 1000     #使用此命令即可使gdb附加到進程

  2、載入libpython腳本

    如果gdb是redhat或fedora等廠商修改過的,會有--python選項,使用此選項即可指定gdb啟動時載入的Python擴展腳本(此腳本是擴展gdb的,不是我們需要debug的腳本)

    $ gdb --python /path/to/libpython .py -p 1000

    如果安裝的是GNU的gdb,就需要打開gdb后手動載入libpython.py腳本  

    (gdb) python
    > import sys  
    >sys.path.insert(0, '/path/to/libpython.py' )  
    > import libpython
    >end
    (gdb)

  這時就可以使用py-bt命令打印當前線程的Python traceback了 

  3、libpython還提供很多命令,例如py-print打印變量,py-locals打印所有本地變量等等,詳細可打開libpython.py查看。

  一點經驗

  • 在gdb可以使用generate-core-file命令生成一個coredump文件。之后可以用gdb –core來打開coredump文件進行debug。避免一直attach住進程,可以快速重啟恢復服務
  • gdb-heap是gdb的一個擴展。可以打印Python的內存使用情況

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM