問題
This application has requested the Runtime to terminate it in an unusual way.
如果你在運行一個Windows應用程序不斷收到此錯誤,這是最可能是因爲某個地方你的Python庫,甚至可以在你的Python運行時,abort()
程序被調用。欲瞭解更多信息,並呼籲abort
請參考MSDN documentation on abort
演示的行爲
您需要
- Visual Studio 2008 (Express Edition)
- 在_SYM_PATH正確設置Microsoft Symbol Server
- 的Python 2.7
- Insta LL WinDBG,並且將其設置爲JIT
創建它調用abort()
一個C DLL,然後使用ctypes的
頭文件abort_dll.h
#include<cstdlib>
#include <windows.h>
extern "C" __declspec(dllexport) void call_abort(void);
來源abort_dll.cpp
#include "abort_dll.h"
__declspec(dllexport) void call_abort(void)
{
abort();
}
調用此DLL
來源dllmain.cpp
#include "abort_dll.h"
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
現在編譯並生成DLL(在Debug和Release版本中)。
假設我的DLL是出現在以下位置
調試版本:C:\ TEMP \調試\ abort_dll.dll 發行版本:C:\ TEMP \發佈\ abort_dll。dll的
在執行下面的代碼你的空閒
from ctypes import *
hDLL = WinDLL(r"C:\TEMP\Debug\abort_dll.dll")
hDLL.call_abort()
你一定會看到下面的彈出
![enter image description here](https://i.stack.imgur.com/wy9Yv.png)
與你的情況,唯一不同的是,它給你的臭名昭著的選項[中止|重試\忽略。這只是因爲我使用了我的DLL的Debug版本。相反,如果我用了一個發佈版本,我通常會看到
![enter image description here](https://i.stack.imgur.com/IWWqY.png)
解決方案
在Windows中,AFAIK你不能用信號處理程序處理SIGABRT
。所以,唯一的選擇是使用JIT,我想你已經安裝了。你會看到以下彈出。
![enter image description here](https://i.stack.imgur.com/0WdXa.png)
,如果您選擇調試,將打開已安裝的JIT調試器。之後,您可以轉儲失敗的堆棧,並確定失敗的模塊。一旦完成,你可以關聯可能調用模塊的python模塊。
我得到同樣的問題,當我運行python程序超過3個小時左右。我的程序使用Python 2.7的Tkinter,Threads和ftplib .. – DevC
沒有源代碼,它不可能提供幫助。 – mguijarr
這需要一些廣泛的調試技巧和時間來隔離問題。 – Abhijit