c++ - 如何防止 cuda-gdb 中的 <optimized out> 值

标签 c++ c++11 cuda gdb cuda-gdb

如何防止 cuda-gdb 优化掉任何值(无论是设备还是主机,本地还是全局)?我查看了 nvidia 论坛,但其中大部分都已有多年历史,似乎没有针对旧 cuda 版本的解决方案,但是否有针对最新版本(cuda 9.2 和 sm 61)的解决方案?

我正在使用标志 described in nvidia's documentation :

-g - “为主机代码生成调试信息。”

-G - “为设备代码生成调试信息。关闭所有优化。不要用于分析;改用 -lineinfo。”

最佳答案

how do I prevent cuda-gdb from optimizing out any value

cuda-gdb 没有优化任何东西;它只是解释编译器 (nvcc) 放入二进制文件中的调试信息。

如果编译器选择不描述某个变量的位置,那么 cuda-gdb 无法恢复该信息。这通常是 nvcc 的调试信息质量问题。

nvcc did 可能描述了您之后的位置,但 cuda-gdb 无法处理该描述,在这种情况下这是 cuda-gdb 中的错误。

无论是哪种情况,除了向 NVidia 投诉之外,您都无能为力。

关于c++ - 如何防止 cuda-gdb 中的 <optimized out> 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52826405/

相关文章:

c++ - 如何在类中使用 vector

c++ - eclipse 朱诺 CDT : Incompatibility with C++11 and debugging issues

c++ - 在 C++11 中禁用复制类的最简洁方法

cuda - 来自 32 个 block 的 32 个线程是否会被安排为一个经线?

c++ - 如何确定我的 GPU 是否进行 16/32/64 位算术运算?

c++ - 输入参数的格式在 push_back opencv 中不匹配

c++ - 十进制数和精确表示

c++ - 无法使用GCC在Ubuntu中编译C++ —包含/库问题(collect2 : ld returned 1 exit status)

c++ - 自动变量初始化和复制/移动构造函数

c++ - LNK2038 : mismatch detected for 'RuntimeLibrary' with cuda