我有一個嵌入Python解釋器的C++應用程序。代碼中有些地方可能會解釋器中斷,我需要確保解釋器處於「安全」狀態才能執行新代碼。我只是調用Py_Finalize並重新初始化所有東西,除了我有一堆PyObject *引用,我需要保持有效。有沒有這樣做的功能,還是甚至有必要?當我提到口譯員正在被打斷時,我的意思是一個seg。我的應用嘗試從中恢復的故障或訪問衝突。如何將Python解釋器重置爲「安全」狀態?
回答
呃,試圖從段錯誤或訪問衝突「恢復」是相當危險的。你首先得到這些信息的原因是,你的程序試圖做一些它本不應該做的事情;因此它遇到了錯誤或無法預料的情況。
在這種情況下,Python解釋器沒有規定回滾到「安全點」。即使最終確定並重新初始化解釋器,也可能會使一些靜態數據處於不一致的狀態。
如果您告訴我們您爲什麼試圖這樣做,我們可能會提出一個替代方案。
我的應用程序嵌入了Python解釋器,允許第三方擴展它。我自己的一些腳本(特別是tkinter腳本)由於某種原因崩潰並進行調試告訴我有問題的代碼位於python31.dll – 2010-01-03 20:25:38
然後唯一理智的答案是嘗試找出究竟是什麼崩潰,並修復它和/或繞過它和/或向http://bugs.python.org報告錯誤:-) – 2010-01-03 22:49:20
嗯,我試了一下,它的工作原理!我首先調用SetUnhandledExceptionFilter,然後當發生訪問衝突時,我的函數被調用。然後,我簡單地增加註冊EIP,直到麻煩的代碼過去,然後恢復。當然,用戶被告知他應該保存他的工作並重新啓動,但它確實有效。 – 2010-01-04 02:09:51
- 1. 如何安全地將Hangfire重置爲乾淨狀態?
- 2. 如何將WinPython的解釋器設置爲vim默認的python解釋器?
- 3. 如何在離線狀態下安裝SL4A的解釋器
- 4. 不安全狀態和安全狀態
- 5. 如何將狀態重置爲初始狀態?
- 6. 如何將其他Python解釋器設置爲IPython
- 7. 重置Python日誌解釋器
- 8. 運行Python解釋器的Python解釋器:解釋行爲
- 9. iOS - 如何重置爲新狀態
- 10. 設置Python解釋器
- 11. 如何解釋pygit2狀態信息
- 12. PostgreSQL將表重置爲原始狀態
- 13. 將webview重置爲初始狀態
- 14. Python解釋器中的Python詞典重新安排?
- 15. 在線c#解釋器安全問題
- 16. 春季安全無狀態配置
- 17. VIM:如何設置py.exe爲Python解釋器
- 18. 將jython解釋器設置爲PyDev
- 19. 如何在Zeppelin中更改Python解釋器的python安裝位置?
- 20. 如何在將textIsSelectable設置爲true後將EditText重置爲可編輯狀態?
- 21. Python解釋器行爲?
- 22. Python網頁前端,保留解釋器狀態
- 23. 替換MacOS X默認Python解釋器安全嗎?
- 24. 從python獲取全局解釋器鎖
- 25. 無法解釋爲什麼std :: istream_iterator將std :: ios_base設置爲錯誤狀態
- 26. 如何安全地更改狀態對象之間的狀態?
- 27. Python解釋器如何將int轉換爲long?
- 28. 如何將畫布按鈕狀態設置爲正常(Python 3)
- 29. 如何以完全自動化的方式在Linux上安裝Python解釋器
- 30. 在準備狀態時可以安全地重置MediaPlayer?
什麼是安全狀態?處於不安全狀態的後果是什麼?是什麼讓你覺得它可能處於不安全的狀態?您是否編寫了一些嵌入在以不安全狀態結束的應用中的其他語言?結果是什麼?您可能想詳細說明其中的一個或所有問題。這很有說服力,三個小時後,沒有人發佈回覆。 – hughdbrown 2010-01-03 02:57:13
好的。一個安全的狀態將是我可以在腳本中調用函數的一個點。如果函數被調用,那麼不安全的狀態將會發生致命錯誤。我從來沒有嵌入解釋器,我很少編寫異常處理代碼。希望有所幫助。 – 2010-01-03 05:36:19