c++ - 在C++中使用nan初始化内存以进行调试

标签 c++ c linux debugging gdb

我如何在启动时将 c 或 c++ 程序中的所有内存初始化为 NaN(非数字)以便使用 gdb 进行调试?

我相信默认情况下 gdb 用零初始化,但这通常对查找因初始化错误而崩溃的代码没有帮助。

PS:我想将每个变量和数组初始化为 NAN(或一些垃圾),仅用于调试。我正在使用的程序有数千个变量,因此更改每个变量相当乏味......

最佳答案

那些十六进制数字在 Rafael 的帖子中可能是正确的,但我会推荐一种更语义化的方式。

参见 http://en.cppreference.com/w/cpp/types/numeric_limits/quiet_NaN

#include <limits>
double nan1 = std::numeric_limits<double>::quiet_NaN();
double nan2 = std::numeric_limits<double>::signaling_NaN();

请注意,有两种 NaN。

关于c++ - 在C++中使用nan初始化内存以进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26621716/

相关文章:

c - 我对 C 中的 SPI_connect ()、Postgresql 有问题

java - 在 64 位操作系统上编写的程序能否在 32 位操作系统上运行?

linux - 使用 htaccess .. 所有 url 都必须使用 www 重定向到 https

linux - 管道输出切割

c - 如何在 C 中将 float 放入 char 数组中?

c++ - 我使用 gdb 跟踪 'catch' 和 'syscall' 失败,它报告找不到 'brk'?

c++ - 无效的静态转换

c++ - Linux C++ : How do I display my Text application output outside of stdout?

c++ - 如何在不读取每一行两次的情况下用 C++ 读取文件

c - 为什么它会随机读取文件?