錯誤堆疊資訊

2022-09-17 05:27:10 字數 828 閱讀 3098

1. 說明

一般我們使用try方法來過濾報錯資訊;

不過能報錯資訊只顯示報錯;

不能定位到**哪行報錯,報個檔案報錯

2. 正常顯示報錯

def func():

try:

i = 123

for i in range(10):

pass

int('aaa')

except exception as e:

print(e)

func()

"""錯誤顯示:

invalid literal for int() with base 10: 'aaa'

"""

3. 使用錯誤堆疊資訊

import traceback

def func2():

try:

i = 123

for i in range(10):

pass

int('aaa')

except exception as e:

print(traceback.format_exc())

func2()

"""錯誤顯示:

traceback (most recent call last):

file "e:/development/autoclient/錯誤的堆疊.py", line 28, in func2

int('aaa')

valueerror: invalid literal for int() with base 10: 'aaa'

"""

錯誤堆疊資訊記錄錯誤日誌

任何 執行前都需要考慮 bug,當出現錯誤資訊時需要展示其錯誤資訊 def f1 result 123int asdf 故意設定乙個錯誤的 源 return result defrun try ret f1 print ret except exception as e print e run vi...

使用backtrace獲取堆疊資訊

一些記憶體檢測工具如valgrind,除錯工具如gdb,可以檢視程式執行時函式呼叫的堆疊資訊,有時候在分析程式時要獲得堆疊資訊,借助於backtrace是很有幫助的,其原型如下 include int backtrace void buffer,int size char backtrace sym...

使用backtrace獲取堆疊資訊

gdb將當前函式的棧幀編號為0,為外層函式的棧幀依次加1,這些編號將成為一些gdb命令的引數,以指明將要操作的是哪乙個函式的棧幀。gdb還支援使用address作為棧幀的識別符號,可在棧幀編號被破壞的情況下使用。1.在棧幀之間切換 gdb中有很多針對呼叫堆疊的命令,都需要乙個目標棧幀,例如列印區域性...