我有一个Windows应用程序,我们在室内使用开发。 感谢Windowserror handling,窗口保持打开,我可以轻松地从任务pipe理器生成崩溃转储。
我曾经在eclipse上通过eclipse在linux上使用过crash-dumps,但是这是Windows上的第一次。
服务器是Windows 2012,而我的开发机器是Windows 7。
当我在Windbg中加载崩溃转储时,加载我的符号,然后select查看调用堆栈,唯一的列表是:
我怎样才能看到我的应用程序调用堆栈?
看起来你的应用程序是一个32位的应用程序,你使用64位Taskmgr生成一个转储。
你应该使用ProcessExplorer来代替, 它关心的是位数 :
Process Explorer v15.3:它还创建与目标进程的位数相匹配的转储文件
或者从C:\Windows\SysWOW64
运行32Bit Taskmgr来生成转储。
正如已经回答的那样 ,你已经获得了一个32位应用程序的64位转储。 在64位操作系统上有32位转换的32位应用程序有多种选择 ,只需选择一个最适合您的应用程序。
如果这是唯一的转储,并且几乎没有机会获得更好的转储,那么可以尝试!sw
切换到32位模式:
0:014> !sw Switched to 32bit mode 0:014:x86>
注意命令提示符是如何改变的。 恕我直言,完全相同的效果可以通过.effmach
来实现
0:014> .effmach x86 Effective machine: x86 compatible (x86) 0:014:x86>
除了在!sw
命令在两者之间切换的地方明确指定模式。
在.NET应用程序的情况下,这些都没有帮助过我,因为SOS不能处理不正确位数的转储。