问题标签 [ndebug]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - -DNDEBUG 通常来自哪里?
我们的构建系统发生了某种变化,以至于优化的构建不再将 -DNDEBUG 添加到编译行。我搜索了我们的 makefile 并没有找到这个。
所以问题是,对于大多数人来说,-DNDEBUG 起源于哪里,它又会如何改变?在我们确实有 -DNDEBUG 之前,我认为它没有从我们的任何 makefile 中删除。
谢谢。
-威廉
c - 关闭特定功能的 DEBUG 宏 (NDEBUG)
我正在使用以下宏来打印我在网上找到的调试信息。它工作得很好。但是,我想在调试调用函数 A 的函数 B 时关闭函数 A 的调试打印。我试过#define NDEBUG
function A
#undef NDEBUG
但没有设法抑制函数 A 中的打印。
任何帮助将不胜感激。也欢迎任何有关完成任务的替代方法的建议。
谢谢~RT
c++ - NDEBUG 预处理器宏用于(在不同平台上)是什么?
我对各种平台/编译器(“实现”)/框架分配给C和 C++ 预处理器宏的目的感兴趣NDEBUG
。
C以及C++标准只提到过一次这个定义,即控制宏的行为assert()
。
我会要求只包括具体的答案,您知道C或 C++的某个平台/框架/库使用该定义来启用或禁用除标准定义的宏NDEBUG
之外的任何其他内容。assert()
问这个问题的一个原因是MS(Visual-C++)总是(?)使用“他们的”_DEBUG
定义来区分调试和发布的东西,我想知道这是否是库/平台拥有他们的常见做法“自己的”调试定义或其他库/平台是否NDEBUG
用于调试相关的东西。
c++ - 使用#define NDEBUG 会给我 C++ 中的错误
如果我在 main.cpp 的顶部定义 NDEBUG,我会收到所有这些错误:
我正在使用 MS Visual Studio 2010、boost 和 gosu 库。
debugging - 调试 xap 的性能比发布 xap 快吗?
WP8 应用程序
调试并发布应用程序后,我尝试在不同设备上运行两者的 xap,显然调试 xap 比发布 xap 快得多。我使用的方法是部署 xap,而不是通过 VS12。如果有人想知道我为什么要这样做,因为当我使用 VS12 调试或发布模式来部署应用程序时,两者都运行良好且相对较快。但令人惊讶的是,正如我所料,当我使用我上传到商店的(发布)xap 本身时,它真的很慢,而(调试)xap 真的很快。而且不要告诉我这是因为调试模式VS12,因为我在部署应用程序时没有使用VS12,并且显示出这种差异!!!。
所以我的问题是:是否可以将调试 xap 上传到商店?如果没有,我应该怎么做才能修改调试 xap 以识别为已发布 xap 以准备上传到商店?
提前感谢您提供任何有用的答案。
cmake - 如何在 CMake 发布模式下启用断言?
CMake 用于编译一些 C++ 文件。代码中有assert
调用。这些调用在 CMake 的发布模式下被禁用。NDEBUG
我猜它在发布模式下定义。
如果我有兴趣在 CMake 的发布模式下断言,我该如何启用它?
c - cmake 忽略 -D CMAKE_BUILD_TYPE=Debug
我只是想在调试模式下构建一个 cmake 项目来启用断言。我尝试了以下版本:
不幸的是,这些都没有达到预期的效果 -CMAKE_BUILD_TYPE
设置为Debug
(因此-NDEBUG
标志没有传递给 gcc)。
此外,我添加variable_watch(CMAKE_BUILD_TYPE)
到我的 mainCMakeLists.txt
以检查值 get 是否在某处被覆盖。但是第一个输出是READ_ACCESS
我的 main 另外我添加variable_watch(CMAKE_BUILD_TYPE)
到我的 mainCMakeLists.txt
并且已经存在的值Release
。
有人知道为什么 cmake 会忽略配置吗?
我正在使用 cmake 2.8.7 版。
c - 如何覆盖 C 中的断言宏?
我想创建自己的版本,assert
以防在NDEBUG
模式下调用 assert 时它会打印一些日志。
我试图做到这一点LD_PRELOAD
并重新定义 assert 宏,但它似乎完全忽略了宏定义并且覆盖__assert_fail
是无关紧要的,因为在NDEBUG
.
如何覆盖libc
assert
宏?
我不想创建不同的函数,因为 assert 已经在项目中大量使用。
python - 在python中屏蔽(无效)断言
当我将 Python 代码作为发行版运行时,我想使 Python 代码中的“断言”无效。考虑到在开发过程中我的文件中可能会使用很多“assert”,但我想跳过“assert”的编译以提高效率。是否有一些简单的方法,例如 c++ 中“NDEBUG”的预定义?
c++ - 有什么办法可以让 Rcpp 停止定义 NDEBUG?
^ 显然,Rcpp 有NDEBUG
自己定义的习惯,即使不是我自己定义的。
我链接的 SO 问题的答案解释了(a)禁止调用assert
上传到 CRAN 的包,因为(b)C++ 代码不应该停止 R 代码,(c)我应该抛出异常,这些异常被rcpp。
然而:
- 我不想将我的代码上传到 CRAN;相反,我正在编写代码供自己使用;
- 即使我希望将它上传到 CRAN,我也可以自己编译它而不
NDEBUG
用于测试目的,然后NDEBUG
在上传到 CRAN 之前定义; - 由于 R 代码和 C++ 代码都是我自己为相同目的编写的(并且我认为它们都是同一个程序),如果检测到其中任何部分的错误,我实际上希望整个程序崩溃;如果 C++ 代码出错,继续运行 R 代码对我来说毫无意义;
- 因为我不知道
NDEBUG
会被定义,所以我已经在我的代码中放了很多s 并且还通过包装在s 中assert
打印诊断信息;这些显然不起作用;std::cerr
#ifndef NDEBUG
- 我不想无条件地抛出异常,因为有些
assert
s 计算量很大; - 截至目前,我的 C++ 代码仍然会破坏我的 R 代码,因为它崩溃了,我正在尝试调查这个问题,但我不能,因为我的诊断不起作用。
有没有办法让 Rcpp 停止定义NDEBUG
?还是我应该简单地删除所有asserts
依赖的东西NDEBUG
并切换到抛出异常并停止抱怨?