命中断言时,堆栈跟踪(几乎)为空. [英] Stack trace is (almost) empty when hitting assertion.

查看:89
本文介绍了命中断言时,堆栈跟踪(几乎)为空.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个程序,其中包含几个一起编译的DLL.

I have a program with several DLLs compiled together.

(从CMD运行)时,我在一个DLL文件中得到一个断言("assert(0)").

When running (from CMD), I get an assertion ("assert(0)") in one of the DLL files.

我得到常规的中止,重试,忽略"盒子.选择重试并打开解决方案进行调试时,会收到以下消息:此模块的调试信息中缺少源信息".

I get the regular "Abort, Retry, Ignore" box. When selecting Retry and opening the Solution for debugging, I am greeted with the message: "Source information is missing from the debug information for this module".

调用堆栈"窗口只有1个条目:"ntdll.dll!RtlUserThreadStart()"

The Call Stack windows has only 1 entry: "ntdll.dll!RtlUserThreadStart()"

线程是主线程,堆栈框架是RtlUserThreadStart(这是唯一的选择).

The Thread is Main Thread and the Stack Frame is RtlUserThreadStart (it's the only option).

代码为C ++,使用调试选项进行编译.检查模块"窗口,所有相关模块(exe和dll)均已加载其符号.

The code is C++, compiled with debug options. Checking the Modules window, all related modules (the exe and the dll) have their symbols loaded.

奇怪的是,当我尝试启动调试器时(在对话框中单击重试"),我将完整的堆栈跟踪打印到我的CMD窗口中:

The strange part is when I try to launch the debugger (hitting "Retry" in the dialog) I get the full stack trace printed to my CMD window:

0x00007FFAB1155AA3 (0x00007FFAB16F64C0 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0x00000058B7036B50), _wassert() + 0x56F bytes(s), f:\dd\vctools\crt_bld\self_64_amd64\crt\src\assert.c, line 344
0x00007FFAB0E3084E (0x00000058B85AC710 0x00000058A3AAB648 0x00000058B7935A28 0xCCCCCCCCCCCCCCCC), <<< REAL STACK TRACE, removed because code is  confidential >>>
0x00007FFAB0E330D1 (0x00000058B85AcC710 0x00000058A3AAB718 0x00000058B7935A28 0xCCCCCCCCCCCCCCCC), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFAB0EDC4A3 (0x00000058A3AAcC080 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFAB0DA1A13 (0x00000058A3AAcC080 0x0000005800000000 0x0000005800000000 0x0000005800000001), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFAB0DA3AFA (0x000000580000c0002 0x00000058A3B22E80 0x00000058B8715200 0xCCCCCCCC000014C0), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFAB0DA5C2D (0x000000580000c0002 0x0000005800000002 0x00000058B8715200 0x00000058000014C0), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFAB0D9E9C6 (0x000000580000c0004 0x00000058B90F5920 0x0000000000001A4C 0x00007FFAB1428CE7), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFABBAEFB00 (0x000000000000c0000 0x00000058B7009360 0x0000000000000001 0x0000005800000000), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFABBAD250D (0x00000058B9C0c03B0 0x00007FFA00080005 0x00000058B9C00230 0x00000058B8F03D40), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFAB02AB587 (0x00000058B9C0c0230 0x00000058A3AAF229 0x00000058B7058670 0x0000000000000000), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFAB029FE21 (0x00000058B702c6830 0x00000058FFFFFFF5 0x0000000000000002 0x00000058B9C00230), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFAB029F0DB (0x000000000008c0001 0x00000058A3AAF308 0x0000000000080000 0xCCCCCCCCCCCCCC00), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFAB028F95A (0x00000058B793c4940 0x00000058A3AAF3D8 0x00000000FFFFFFD4 0x00000058B83F99A0), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFAB0235FAC (0x00000058B705cCA90 0x00000058B706C9C0 0x0000000000000000 0xCCCCCCCCCCCCCCCC)  <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFAB027E4B8 (0x00007FF6FC87c4A90 0x0000000000000000 0x0000000000000000 0x00000058A3AAF668), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFAB0F6D272 (0x00000058B706cC9C0 0xCCCCCCCC00000000 0x0000000000000000 0x0000000000000000), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFAB0F6D434 (0x00000058B706cC9C0 0x0000005800000000 0x0000000000000000 0x0000000000000000), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FFAB0F5255D (0x00000058B706cD200 0x0000005800000000 0x0000000000000000 0x0000000000000000), <<< REAL STACK TRACE, removed because code is confidential >>>
0x00007FF6FC87148E (0x00007FF6FC87c9CB0 0x00000058A3AAFAB4 0x00000058A3B97B70 0x00000000000259C0), Setup_OpenCL() + 0x2FE bytes(s), c:\users\nitzhaki\documents\testing\test.cpp, line 128 + 0x26 byte(s)
0x00007FF6FC871EF0 (0x00007FF600000002 0x00000058B700A160 0x0000000000000000 0x0000000000000000), wmain() + 0x220 bytes(s), c:\users\nitzhaki\documents\test.cpp, line 379 + 0x11 byte(s)
0x00007FF6FC87496D (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), __tmainCRTStartup() + 0x19D bytes(s), f:\dd\vctools\crt_bld\self_64_amd64\crt\src\crtexe.c, line 533 + 0x19 byte(s)
0x00007FF6FC874A9E (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), wmainCRTStartup() + 0xE bytes(s), f:\dd\vctools\crt_bld\self_64_amd64\crt\src\crtexe.c, line 377
0x00007FFACD6F13D2 (0x00007FFACD6F13B0 0x0000000000000000 0x0000000000000000 0x0000000000000000), BaseThreadInitThunk() + 0x22 bytes(s)
0x00007FFACDC15454 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), RtlUserThreadStart() + 0x34 bytes(s)

所以我在CMD窗口上打印了堆栈跟踪,但是调试器本身什么都没有.

So I have the stacktrace printed on the CMD window, but nothing in the debugger itself.

在具有相同代码,mvsc和OS的类似PC上进行测试,一切正常,我可以看到堆栈跟踪.

Testing on a similar pc, with same code, mvsc and OS, everything works just fine and I can see the stack trace.

我正在使用Windows 8.1,MSVC 2012更新4.

I am using Windows 8.1, MSVC 2012 update 4.

推荐答案

帕维尔

在调试窗口中,这就是我所拥有的:http://imgur.com/UtwwL9o

In the debugging windows this is what I have: http://imgur.com/UtwwL9o

 所有3个都是唯一可用的选项.

 All 3 of them are the only available option.


这篇关于命中断言时,堆栈跟踪(几乎)为空.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆