日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)Python教程:faulthandler——轉(zhuǎn)儲(chǔ)Python的跟蹤信息

faulthandler —— 轉(zhuǎn)儲(chǔ) python 的跟蹤信息

3.3 新版功能.

鎮(zhèn)沅ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書(shū)合作)期待與您的合作!


當(dāng)故障、超時(shí)或收到用戶(hù)信號(hào)時(shí),利用本模塊內(nèi)的函數(shù)可轉(zhuǎn)儲(chǔ) Python 跟蹤信息。調(diào)用 faulthandler.enable() 可安裝 SIGSEGV 、 SIGFPE 、 SIGABRT 、 SIGBUSSIGILL 信號(hào)的故障處理程序。通過(guò)設(shè)置 PYTHONFAULTHANDLER 環(huán)境變量或 -X faulthandler 命令行參數(shù),還可以在啟動(dòng)時(shí)開(kāi)啟這些設(shè)置。

故障處理程序與操作系統(tǒng)的故障處理程序兼容,比如 Apport 或 Windows 故障處理程序等。如果 sigaltstack() 函數(shù)可用,本模塊將為信號(hào)處理程序使用備用堆棧。這樣即便堆棧溢出也能轉(zhuǎn)儲(chǔ)跟蹤信息。

故障處理程序?qū)⒃跒?zāi)難性場(chǎng)合調(diào)用,因此只能使用信號(hào)安全的函數(shù)(比如不能在堆上分配內(nèi)存)。由于這一限制,與正常的 Python 跟蹤相比,轉(zhuǎn)儲(chǔ)量是最小的。

  • 只支持 ASCII 碼。編碼時(shí)會(huì)用到 backslashreplace 錯(cuò)誤處理程序。

  • 每個(gè)字符串限制在 500 個(gè)字符以?xún)?nèi)。

  • 只會(huì)顯式文件名、函數(shù)名和行號(hào)。(不顯示源代碼)

  • 上限是 100 頁(yè)內(nèi)存幀和 100 個(gè)線程。

  • 反序排列:最近的調(diào)用最先顯示。

默認(rèn)情況下,Python 的跟蹤信息會(huì)寫(xiě)入 sys.stderr。為了能看到跟蹤信息,應(yīng)用程序必須運(yùn)行于終端中。日志文件也可以傳給 faulthandler.enable()。

本模塊是用 C 語(yǔ)言實(shí)現(xiàn)的,所以才能在崩潰或 Python 死鎖時(shí)轉(zhuǎn)儲(chǔ)跟蹤信息。

在 Python 啟動(dòng)時(shí), Python 開(kāi)發(fā)模式 會(huì)調(diào)用 faulthandler.enable()。

轉(zhuǎn)儲(chǔ)跟蹤信息

faulthandler.dump_traceback(file=sys.stderr, all_threads=True)

將所有線程的跟蹤數(shù)據(jù)轉(zhuǎn)儲(chǔ)到 file 中。如果 all_threadsFalse,則只轉(zhuǎn)儲(chǔ)當(dāng)前線程。

在 3.5 版更改: 增加了向本函數(shù)傳入文件描述符的支持。

故障處理程序的狀態(tài)

faulthandler.enable(file=sys.stderr, all_threads=True)

啟用故障處理程序:為 SIGSEGV 、 SIGFPE 、 SIGABRT 、 SIGBUSSIGILL 信號(hào)安裝處理程序,以轉(zhuǎn)儲(chǔ) Python 跟蹤信息。如果 all_threadsTrue,則會(huì)為每個(gè)運(yùn)行中的線程生成跟蹤信息。否則只轉(zhuǎn)儲(chǔ)當(dāng)前線程。

file 必須保持打開(kāi)狀態(tài),直至停用故障處理程序?yàn)橹梗簠⒁?jiàn) 文件描述符相關(guān)話題。

在 3.5 版更改: 增加了向本函數(shù)傳入文件描述符的支持。

在 3.6 版更改: 在 Windows 系統(tǒng)中,同時(shí)會(huì)安裝一個(gè) Windows 異常處理程序。

在 3.10 版更改: 現(xiàn)在如果 all_threads 為 True,則轉(zhuǎn)儲(chǔ)信息會(huì)包含垃圾收集器是否正在運(yùn)行。

faulthandler.disable()

停用故障處理程序:卸載由 enable() 安裝的信號(hào)處理程序。

faulthandler.is_enabled()

檢查故障處理程序是否被啟用。

一定時(shí)間后轉(zhuǎn)儲(chǔ)跟蹤數(shù)據(jù)。

faulthandler.dump_traceback_later(timeout, repeat=False, file=sys.stderr, exit=False)

timeout 秒超時(shí)后,轉(zhuǎn)儲(chǔ)所有線程的跟蹤信息,如果 repeatTrue,則每隔 timeout 秒轉(zhuǎn)儲(chǔ)一次。如果 exitTrue,則在轉(zhuǎn)儲(chǔ)跟蹤信息后調(diào)用 _exit(),參數(shù) status=1。請(qǐng)注意, _exit() 會(huì)立即關(guān)閉進(jìn)程,這意味著不做任何清理工作,如刷新文件緩沖區(qū)等。如果調(diào)用兩次函數(shù),則新的調(diào)用將取代之前的參數(shù),超時(shí)時(shí)間也會(huì)重置。計(jì)時(shí)器的精度為亞秒級(jí)。

file 必須保持打開(kāi)狀態(tài),直至跟蹤信息轉(zhuǎn)儲(chǔ)完畢,或調(diào)用了 cancel_dump_traceback_later() :參見(jiàn) 文件描述符相關(guān)話題。

本函數(shù)用一個(gè)看門(mén)狗線程實(shí)現(xiàn)。

在 3.7 版更改: 該函數(shù)現(xiàn)在總是可用。

在 3.5 版更改: 增加了向本函數(shù)傳入文件描述符的支持。

faulthandler.cancel_dump_traceback_later()

取消 dump_traceback_later() 的最后一次調(diào)用。

轉(zhuǎn)儲(chǔ)用戶(hù)信號(hào)的跟蹤信息。

faulthandler.register(signum, file=sys.stderr, all_threads=True, chain=False)

注冊(cè)一個(gè)用戶(hù)信號(hào):為 signum 信號(hào)安裝一個(gè)處理程序,將所有線程或當(dāng)前線程(all_threadsFalse 時(shí))的跟蹤信息轉(zhuǎn)儲(chǔ)到 file 中。如果 chain 為 True,則調(diào)用上一層處理程序。

file 必須保持打開(kāi)狀態(tài),直至該信號(hào)被 unregister() 注銷(xiāo):參見(jiàn) 文件描述符相關(guān)話題。

Windows 中不可用。

在 3.5 版更改: 增加了向本函數(shù)傳入文件描述符的支持。

faulthandler.unregister(signum)

注銷(xiāo)一個(gè)用戶(hù)信號(hào):卸載由 register() 安裝的 signum 信號(hào)處理程序。如果信號(hào)已注冊(cè),返回 True,否則返回 False。

Windows 中不可用。

文件描述符相關(guān)話題

enable() 、 dump_traceback_later() 和 register() 保留其 file 參數(shù)給出的文件描述符。 如果文件關(guān)閉,文件描述符將被一個(gè)新文件重新使用;或者用 os.dup2() 替換了文件描述符,則跟蹤信息將被寫(xiě)入另一個(gè)文件。 每次文件被替換時(shí),都會(huì)再次調(diào)用這些函數(shù)。

示例

在 Linux 中啟用和停用內(nèi)存段故障的默認(rèn)處理程序:

 
 
 
 
  1. $ Python3 -c "import ctypes; ctypes.string_at(0)"
  2. Segmentation fault
  3. $ python3 -q -X faulthandler
  4. >>> import ctypes
  5. >>> ctypes.string_at(0)
  6. Fatal Python error: Segmentation fault
  7. Current thread 0x00007fb899f39700 (most recent call first):
  8. File "/home/python/cpython/Lib/ctypes/__init__.py", line 486 in string_at
  9. File "", line 1 in
  10. Segmentation fault

分享名稱(chēng):創(chuàng)新互聯(lián)Python教程:faulthandler——轉(zhuǎn)儲(chǔ)Python的跟蹤信息
分享路徑:http://m.5511xx.com/article/codsdss.html