Windows .effmach x86无法从64位切换到32位

Windows .effmach x86无法从64位切换到32位,windows,debugging,64-bit,windbg,Windows,Debugging,64 Bit,Windbg,我使用Windbg 64位调试程序(32位,语言C),该程序包含异常。 在我的程序中,我回忆有关发生异常的信息,特别是ExceptionRecord和ContextRecord,我调用批处理文件调用cdb.exe(64位)。 批处理文件中调用cdb.exe的行是: cdb.exe -p %PID% -pd -loga %LogFile%.txt -lines -c ".echo ;.echo *** Call stack of module causing abort ***;.effmac

我使用Windbg 64位调试程序(32位,语言C),该程序包含异常。
在我的程序中,我回忆有关发生异常的信息,特别是ExceptionRecord和ContextRecord,我调用批处理文件调用cdb.exe(64位)。
批处理文件中调用cdb.exe的行是:

 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;!西南而不是.effmach x86,调试程序运行并准确显示我需要的内容(行和函数导致异常),但当我使用.effmach x86时,批处理文件停止运行,或崩溃,或我不知道,但没有结果,并且日志文件未创建。
我的问题:为什么.effmachx86使我的批处理文件崩溃? 谢谢

我使用Windows 7 64位
(对不起我的英语)

我发现了问题

由于简单的原因,必须在x86和下一个分号之间添加空格;(x86;体系结构不存在)

既然您的程序是32位,为什么不使用32位Windbg?只要使用用户模式,即使在64位Windows上也能完美运行。哪个版本的WinDbg?你为什么要实际使用.effmach?因为你创建了一个完整的转储,里面有所有的信息,所以你以后仍然可以使用.effmach?也许你可以用WinDbg调试CDB来找到:-)嗨,谢谢大家的评论@Kjell Gunnar:这一次我们有一个到win7 64位的大迁移,我将测试64位Thomas W:直接使用WinDbg,它工作得很好,因为出于某些原因我应该使用批处理文件