成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python腳本在使用gdb調試時常會遇到的三個“克星”

開發 后端
熟話說不怕一萬,就怕萬一,在使用gdb調試Python腳本的實際操作步驟中,有幾種情況是我們很難解決的。例如段錯誤,在運行中的daemon的相關程序,等

使用gdb調試Python腳本

我們在實際調試python腳本中一般可以用記錄log和python本身自帶的pdb,當然這是在一般的情況下,以下的文章就會提出一些運用log和python本身自帶的pdb卻不能解決的相關情況的相關介紹。 但凡事總有例外,在以下三種情況時上述方法就無能為力了。
1 段錯誤

2 運行中的daemon程序

3 core dump

這個時候就需祭出gdb進行調試。python2.6的源碼中提供了部分預定義函數以便大家使用gdb調試,我們只需將文件Python-2.6/Misc/gdbinit所包括的內容加入到用戶目錄下的.gdbinit文件中即可,這樣每次啟動gdb時會自動完成這些宏的定義。但可惜的是Python2.6.2 gdbini對于pylocals的定義居然有錯誤, 看來是沒有隨著代碼的更新而同步更新。

我們只需將

  1. while $_i < f->f_nlocals 

修改為

  1. while $_i < f->f_code->co_nlocals 

即可。文章后面所附的幾個宏建議也加入的.gdbinit文件中,更多的宏可參考我們首先需要構造一個會造成段錯誤的python腳本。老實說讓python發生段錯誤并不容易,但通過其外部調用庫就很簡單了。我們將該文件命名為gdb_test.py

  1. import sys, os, libxml2  
  2. def segv_test():  
  3. s = "<html><body><div><a><a></a></a><a></a></div></body></html>" 
  4. options = libxml2.HTML_PARSE_RECOVER + \  
  5. libxml2.HTML_PARSE_NOERROR + \  
  6. libxml2.HTML_PARSE_NOWARNING  
  7. doc = libxml2.htmlReadDoc(s, None, 'utf-8', options).doc  
  8. ctxt = doc.xpathNewContext()  
  9. nodes = ctxt.xpathEval('//body/node()')  
  10. nodes.reverse()  
  11. for note in nodes:  
  12. nexts = note.xpathEval('node()')  
  13. note.unlinkNode()   
  14. note.freeNode()  

 freeNode會將該節點及其子節點釋放掉

  1. nexts[0].unlinkNode()   
  2. nexts[0].freeNode()  

資源已經釋放,再次釋放會造成段錯誤

 

  1. def main():  
  2. segv_test()  
  3. if __name__ == "__main__":  
  4. main()  

 

使用gdb運行該腳本,我們會得到段錯誤信息。

  1. gdb python  
  2. r gdb_test.py  
  3. *** glibc detected *** double free or corruption 
    (fasttop): 0x08104570 ***  
  4. Program received signal SIGABRT, Aborted.  
  5. [Switching to Thread -1208260928 (LWP 26159)]  
  6. 0x00b987a2 in _dl_sysinfo_int80 () from /
    lib/ld-linux.so.2  
     

 

 以上就是對使用gdb調試Python腳本相關的內容的介紹,望你會有所收獲。

【編輯推薦】

  1. Python編寫shell腳本中常用的文件介紹
  2. 用Python編寫shell腳本時經常使用的函數的介紹
  3. 用Python腳本轉換成windows的可執行程序簡介
  4. Python入門用Bug修改和.jam文件需要注意的問題
  5. 搭建Python Web環境所需要的相關步驟介紹
責任編輯:佚名 來源: 博客園
相關推薦

2025-06-26 05:00:00

2020-07-27 13:49:47

Python編程語言開發

2019-10-09 17:12:16

PythonLinuxWindows

2017-02-06 18:42:37

Linuxgdb程序

2021-03-15 06:23:40

GDB調試代碼編程語言

2015-08-14 09:21:09

gdb工具調試 Go

2022-10-13 15:31:32

Python軟件工程編碼

2024-09-05 13:02:41

2012-05-27 18:24:12

蘋果

2018-03-13 12:31:21

2023-04-26 11:14:11

IT領導者遠程工作

2021-10-13 06:59:03

Python技巧編程

2021-07-28 08:53:53

GoGDB調試

2022-06-30 09:01:00

嵌入式軟件技巧

2022-12-19 10:10:07

GDB命令

2024-01-09 15:37:46

2012-11-19 10:32:07

路由器ConsoleIP地址

2009-08-06 11:00:19

C#對象的使用

2020-06-11 09:00:27

SDN網絡架構網絡

2019-04-30 09:40:41

Windows 10技巧Windows
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 不卡的av在线 | 日本不卡一二三 | 欧美视频在线播放 | 亚洲精品免费在线观看 | 国产精品伦理一区二区三区 | 日韩福利一区 | 日韩视频精品在线 | 九色91视频| 一级免费a| 色婷婷久久 | 久久久久久久电影 | 九一视频在线播放 | 精品videossex高潮汇编 | 精品久久国产 | 正在播放国产精品 | 亚洲国产精品一区二区三区 | 亚洲精品电影网在线观看 | 亚洲一区二区三区在线播放 | 97精品国产一区二区三区 | 狠狠艹 | 久久久精品视 | 丁香婷婷综合激情五月色 | 成人国产精品久久久 | 黄色一级片在线播放 | 国产一区二区三区视频 | 在线视频中文字幕 | 999久久精品 | 亚洲免费一区二区 | 久久人| 欧美国产中文 | 不卡在线视频 | 亚洲精品成人av久久 | 国产精久久久久久 | 一级特黄在线 | 91亚洲国产成人久久精品网站 | 一区二区三区精品 | 日本视频中文字幕 | 一区二区三区四区视频 | 精品综合在线 | 久久成人一区二区三区 | 在线看av的网址 |