2014-01-09 64 views
0

我使用Windbg 64位調試程序(32位,語言C),此程序包含異常。
在我的程序中,我記錄了有關發生異常的信息,特別是ExceptionRecord和ContextRecord,我調用了批處理文件,這個文件叫cdb.exe(64位)。
在批處理文件中的行,我叫的Cdb.exe是:.effmach x86無法從64位切換到32位

cdb.exe -p %PID% -pd -loga %LogFile%.txt -lines -c ".echo ;.echo *** Call stack of module causing abort ***;.effmach x86;.cxr %ContextRecord%;kp; .dump /ma %LogFile%.dmp;q" > nul 

其中%PID%:我的進程ID
所以,當我使用; .load wow64exts;!sw;而不是.effmach x86,debuger運行並顯示我到底需要什麼(該行和函數導致異常),但是當我使用.effmach x86時,批處理文件停止運行或崩潰,或者我不'知道,但沒有結果並且日誌文件未創建。
我的問題:爲什麼.effmach x86崩潰我的批處理文件? 感謝

我使用的是Windows 7 64位
(對不起,我的英語)

+0

由於你的程序是32位,爲什麼你不使用32位Windbg? 只要你做用戶模式,即使在64位的Windows上,這個工作也是完美的。 –

+0

哪個版本的WinDbg?爲什麼你真的.effmach - 因爲你創建了一個完整的轉儲,裏面包含了所有的信息,所以你以後可以繼續使用.effmach嗎? –

+0

也許你可以用WinDbg調試CDB來找出:-) –

回答

1

我發現問題
的原因很簡單,必須x86和下一個分號之間添加空間; (x86;體系結構不存在)

+0

你可以接受你自己的答案作爲解決方案。 –