新聞中心
通過堆棧我們可以很清楚的看到關(guān)于Python腳本的內(nèi)部各函數(shù)之間的調(diào)用關(guān)系, 那么以下的文章主要是介紹我們?cè)趺床榭聪嚓P(guān)函數(shù)的內(nèi)變量情況,希望你在看完這篇文章會(huì)有所收獲。

正如大家所, python內(nèi)部堆棧和函數(shù)的調(diào)用由PyEval_EvalFrameEx完成的, 一次PyEval_EvalFrameEx意味著一次函數(shù)調(diào)用,象上面的第19,13,10行分別對(duì)應(yīng)于main, segv_test, freeNode函數(shù), 將gdb定位到對(duì)應(yīng)行后,使用pylocals宏即可查看該函數(shù)內(nèi)部變量的詳細(xì)情況。
- (gdb) up 13
- #13 0x007d6d2b in PyEval_EvalFrameEx
(f=0x81242fc, throwflag=0) at Python/ceval.c:2370- 2370 in Python/ceval.c
- (gdb) pylocals
- s:
- object :
''- type : str
- refcount: 3
- address : 0xb7f64440
- options:
- object : 97
- type : int
- refcount: 7
- address : 0x8082c20
- doc:
- object :
- type : instance
- refcount: 1
- address : 0xb7cc04ec
- ctxt:
- object :
- type : instance
- refcount: 1
- address : 0xb7f70ccc
- nodes:
- object : [
] - type : list
- refcount: 2
- address : 0xb7f70a8c
- note:
- object :
- type : instance
- refcount: 2
- address : 0xb7cc0cac
- nexts:
- object : [
,
, ] - type : list
- refcount: 1
- address : 0xb7f4ce4c
Python腳本調(diào)試時(shí)斷點(diǎn)的設(shè)置是個(gè)很麻煩的東西,我所能想到的有兩種方法:
1 根據(jù)函數(shù)的python源碼進(jìn)行斷點(diǎn)設(shè)置;
2 采用sleep函數(shù)和ctrl+c來中斷程序的運(yùn)行。
無論怎么樣使用逐條執(zhí)行進(jìn)行調(diào)試都是很痛苦的事情,因?yàn)檫@個(gè)時(shí)候python解釋器本身要做很多工作。 由于本身對(duì)于python源碼不是很熟悉,因此對(duì)如何使用gdb對(duì)python腳本調(diào)試上也只是很粗略的理解, 這里權(quán)當(dāng)拋磚引玉, 歡迎達(dá)人們給出分享的經(jīng)驗(yàn)。以上就是對(duì)Python腳本內(nèi)部各函數(shù)的調(diào)用關(guān)系, 以及如何查看函數(shù)內(nèi)變量情況相關(guān)的內(nèi)容的介紹,望你會(huì)有所收獲。
【編輯推薦】
- 搭建Python Web環(huán)境所需要的相關(guān)步驟介紹
- 用Python生成不依賴dll的exe的操作步驟簡(jiǎn)介
- Python標(biāo)準(zhǔn)庫的強(qiáng)大功能的相關(guān)介紹
- Python腳本與C++程序互相調(diào)用的實(shí)際操作
- Python嵌入c中時(shí)應(yīng)該鏈接的庫有哪些
文章名稱:Python腳本的內(nèi)部各函數(shù)之間的調(diào)用關(guān)系
文章路徑:http://m.fisionsoft.com.cn/article/cojisgd.html


咨詢
建站咨詢
