问题标签 [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.

0 投票
3 回答
26126 浏览

c++ - -DNDEBUG 通常来自哪里?

我们的构建系统发生了某种变化,以至于优化的构建不再将 -DNDEBUG 添加到编译行。我搜索了我们的 makefile 并没有找到这个。

所以问题是,对于大多数人来说,-DNDEBUG 起源于哪里,它又会如何改变?在我们确实有 -DNDEBUG 之前,我认为它没有从我们的任何 makefile 中删除。

谢谢。

-威廉

0 投票
2 回答
1596 浏览

c - 关闭特定功能的 DEBUG 宏 (NDEBUG)

我正在使用以下宏来打印我在网上找到的调试信息。它工作得很好。但是,我想在调试调用函数 A 的函数 B 时关闭函数 A 的调试打印。我试过#define NDEBUG function A #undef NDEBUG但没有设法抑制函数 A 中的打印。

任何帮助将不胜感激。也欢迎任何有关完成任务的替代方法的建议。

谢谢~RT

0 投票
2 回答
44257 浏览

c++ - NDEBUG 预处理器宏用于(在不同平台上)是什么?

我对各种平台/编译器(“实现”)/框架分配给C和 C++ 预处理器宏的目的感兴趣NDEBUG

C以及C++标准只提到过一次这个定义,即控制宏的行为assert()

我会要求只包括具体的答案,您知道C或 C++的某个平台/框架/库使用该定义来启用或禁用除标准定义的NDEBUG之外的任何其他内容。assert()

问这个问题的一个原因是MS(Visual-C++)总是(?)使用“他们的”_DEBUG定义来区分调试和发布的东西,我想知道这是否是库/平台拥有他们的常见做法“自己的”调试定义或其他库/平台是否NDEBUG用于调试相关的东西。

0 投票
2 回答
861 浏览

c++ - 使用#define NDEBUG 会给我 C++ 中的错误

如果我在 main.cpp 的顶部定义 NDEBUG,我会收到所有这些错误:

我正在使用 MS Visual Studio 2010、boost 和 gosu 库。

0 投票
1 回答
67 浏览

debugging - 调试 xap 的性能比发布 xap 快吗?

WP8 应用程序

调试并发布应用程序后,我尝试在不同设备上运行两者的 xap,显然调试 xap 比发布 xap 快得多。我使用的方法是部署 xap,而不是通过 VS12。如果有人想知道我为什么要这样做,因为当我使用 VS12 调试或发布模式来部署应用程序时,两者都运行良好且相对较快。但令人惊讶的是,正如我所料,当我使用我上传到商店的(发布)xap 本身时,它真的很慢,而(调试)xap 真的很快。而且不要告诉我这是因为调试模式VS12,因为我在部署应用程序时没有使用VS12,并且显示出这种差异!!!。

所以我的问题是:是否可以将调试 xap 上传到商店?如果没有,我应该怎么做才能修改调试 xap 以识别为已发布 xap 以准备上传到商店?

提前感谢您提供任何有用的答案。

0 投票
4 回答
16675 浏览

cmake - 如何在 CMake 发布模式下启用断言?

CMake 用于编译一些 C++ 文件。代码中有assert调用。这些调用在 CMake 的发布模式下被禁用。NDEBUG我猜它在发布模式下定义。

如果我有兴趣在 CMake 的发布模式下断言,我该如何启用它?

0 投票
3 回答
49078 浏览

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 版。

0 投票
5 回答
5123 浏览

c - 如何覆盖 C 中的断言宏?

我想创建自己的版本,assert以防在NDEBUG模式下调用 assert 时它会打印一些日志。

我试图做到这一点LD_PRELOAD并重新定义 assert 宏,但它似乎完全忽略了宏定义并且覆盖__assert_fail是无关紧要的,因为在NDEBUG.

如何覆盖libc assert宏?

我不想创建不同的函数,因为 assert 已经在项目中大量使用。

0 投票
1 回答
79 浏览

python - 在python中屏蔽(无效)断言

当我将 Python 代码作为发行版运行时,我想使 Python 代码中的“断言”无效。考虑到在开发过程中我的文件中可能会使用很多“assert”,但我想跳过“assert”的编译以提高效率。是否有一些简单的方法,例如 c++ 中“NDEBUG”的预定义?

0 投票
1 回答
182 浏览

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
  • 我不想无条件地抛出异常,因为有些asserts 计算量很大;
  • 截至目前,我的 C++ 代码仍然会破坏我的 R 代码,因为它崩溃了,我正在尝试调查这个问题,但我不能,因为我的诊断不起作用。

有没有办法让 Rcpp 停止定义NDEBUG?还是我应该简单地删除所有asserts依赖的东西NDEBUG并切换到抛出异常并停止抱怨?