在Debug模式下中断, 在Release模式下跳出当前函数的断言

在Debug模式下中断, 在Release模式下跳出当前函数的断言

#ifdef DEBUG
#define __breakPoint_on_debug asm("int3")
#else
#define __breakPoint_on_debug
#endif

// 验证
#define UXY_ASSERT_RETURN_ON_RELEASE( __condition, __desc, ... ) \
        metamacro_if_eq(0, metamacro_argcount(__VA_ARGS__))         (__XY_ASSERT_1(__condition, __desc, __VA_ARGS__))            (__XY_ASSERT_2(__condition, __desc, __VA_ARGS__))

#define __XY_ASSERT_1( __condition, __desc ) \
        if ( !(__condition) ) __breakPoint_on_debug;           else return;

#define __XY_ASSERT_2( __condition, __desc, __returnedValue ) \
        if ( !(__condition) ) __breakPoint_on_debug;           else return __returnedValue;
时间: 2024-08-25 18:25:24

在Debug模式下中断, 在Release模式下跳出当前函数的断言的相关文章

FFMPEG编码debug模式没问题,release模式报错

FFMPEG编码debug模式没问题,release模式报错 我在做"火灾监控预警软件"时编译工程,需要使用ffmpeg对H264码流解码.发现在用到ffmpeg debug版本运行正常,切换到release时,出现"无法定位程序输入点?...于动态链接库avcodec-56.dll". 我是直接从http://ffmpeg.zeranoe.com/builds/网站上下好的已经编译通过的dll.当时我就怀疑dll只是debug模式下编译的,而非release版本.

解决部分在Debug模式下程序没问题但是Release模式下出现问题的方法

编译策略介绍 关于优化级别:GCC_OPTIMIZATION_LEVEL 描述如下 None: Do not optimize.  [-O0]With this setting, the compiler's goal is to reduce the cost of compilation and to make debugging produce the expected results. Statements are independent: if you stop the program

log4net在release模式下无法生成文件或不写入日志

在Debug模式一切正常,但是在release模式下log4net不工作,查了很多资料,终于解决.具体做如下检查修改. 1.检查log4net写入日志文件路径是否正确: 2.检查对应日志文件路径是否有权限: 3.检查程序log4net配置获取路径: 最常见的问题是第三步,一般都是在AssemblyInfo.cs文件中写入如下代码 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Config

【Visual Studio】VS2013的Release模式下进行调试(转)

原文转自 http://blog.csdn.net/haizimin/article/details/50262901 在有的情况下,我们可能不能直接利用Debug模式进行程序调试,那么如何在Release模式下进行程序调试呢? 一.将项目属性设置为Release,"生成"--->"配置管理器": 二.按Alt+F7,弹出属性页进行设置:

VS2005--设置Release模式下调试

今天初略看了下,所谓Release和Debug只是大家和编译器约定的一些生成规则而已,所以调试是无所谓Release和Debug的,只是由于生成的规则不同,可能Release的一些调试结果没Debug精确详细而已. 下面是设置在Release模式下调试的方法: 1.工程项目上右键 -> 属性 2.c++ -> 常规 -〉调试信息格式    选  程序数据库(/Zi)或(/ZI), 注意:如果是库的话,只能(Zi) 3.c++ -> 优化 -〉优化            选  禁止(/Od

vs2010中release模式下调试程序

debug模式调试信息全,但是速度很慢,在数据量比较大的时候非常影响调试效率,release模式速度快,但是没有调试信息.所以在编译的时候很多编译器会提供一种折中的编译方式,在release下提供调试信息,可以结合debug和release的优点进行调试,如用cmake可以编译RelWithDebInfo模式,qtcreator提供了profile的模式.但是有的时候vs2010项目工程仅仅编译了debug和release两种模式,还想使用这种折中的方式,可以设置编译属性达到相似的效果.根据网上

[Qt] Release模式下产生调试信息

分两步,设置Qt配置文件,设置VS. https://blog.csdn.net/itas109/article/details/83652387 F:\Qt\Qt5.7.1\5.7\msvc2015_64\mkspecs\common\msvc-desktop.conf QMAKE_CFLAGS_RELEASE = -O2 -MD -Zi QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO /DEBUG https://blog.csdn.net/guo5036040

IOS中(Xcode) DEBUG模式(RELEASE模式)控制NSLog输出,NSLog两种不同情况的输出方式

[新年新气象,2016/01/04] 俺们在开发IOS程序过程中,经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程.但是一个发布的程序,里面带有太多的NSLog输出,肯定对于App性能有所影响,这时候我们可以使用一个宏定义来处理,在开发的时候使用DEBUG模式,在发布的时候使用RELEASE模式.这样,发布的App就不会在程序内部做大量的NSLog输出了

iOS开发技巧(系列十七:使用Xcode DEBUG模式和RELEASE模式)

在开发过程中,我们经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程.但是一个发布的程序,里面带有太多的NSLog输出,肯定对于App性能有所影响,这时候我们可以使用一个宏定义来处理,在开发的时候使用DEBUG模式,在发布的时候使用RELEASE模式.这样,发布的App就不会在程序内部做大量的NSLog输出了. 简单的代码如下, #if defined(DEBUG)||defined(_DEBUG)     NS