首页新闻找找看学习计划

vs2013 assert失败时总是突然结束,不给出任何提示信息,怎么办?

0
[已解决问题] 解决于 2015-05-14 10:54

我在c++程序中使用assert,每次如果assert中的内容测试失败,程序就直接结束了,什么提示都不给出,常常给人莫名其妙的感觉,为什么就突然结束了?有时会立即想到是不是assert不通过,但查找是哪个assert不通过也常常很花费功夫!有时要找很久才想起是不是哪个assert又不通过,真汗!我使用vs2013,这个assert不应该是这样的吧?是不是有一个地方可以设置它不要突然结束程序,而是给出提示?百度很久没有答案,望高手指教!

Patrickz10的主页 Patrickz10 | 初学一级 | 园豆:7
提问于:2015-05-14 08:12
< >
分享
最佳答案
0

刚想到一个主意,尝试用命令行运行一下,看到运行结果中输出了Assertion failed...的错误信息!直接运行时它估计只闪了一下,根本看不到错误信息,奇怪的是怎么没有人提问和解决这个问题呢?在此我将自己的方法写下来,供以后或他人参考,假如我的程序为Test.exe,在同目录中创建名为runTest.cmd的文件,编辑文件内容如下:
:执行同目录下的文件
Test.exe
pause
保存,双击运行会打开命令行窗口,虽然Test.exe同样会突然退出,但是可以看到输出的错误信息。也许有更简单直接的方法可以设置debug模式下assert的表现方式,也许大家的vs默认模式就没有这个问题,但是我的vs运行实在就是这样,若有更直接的方法欢迎大家指教啊

Patrickz10 | 初学一级 |园豆:7 | 2015-05-14 10:54
其他回答(1)
0

试试stackoverflow上提到的方法(Visual Studio exits on assertion failure with no error message):

In my case, the problem was that Configuration Properties -> C/C++ -> Code Generation -> Runtime Library was set to "Multi-threaded" for both the Debug and Release builds. The correct setting is "Multi-threaded Debug" for the Debug build and "Multi-threaded" for the Release Build.

dudu | 园豆:38628 (高人七级) | 2015-05-14 08:19

试了,都改成MTd(原来是MDd,不是上文提到的MT或MD),但是没有用

支持(0) 反对(0) Patrickz10 | 园豆:7 (初学一级) | 2015-05-14 09:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册