从 cuda-memcheck 的输出中跟踪函数名称

Hie*_*ham 6 memory cuda gpu memcheck

我正在运行cuda-memcheck调试我的代码,输出如下

========= Program hit cudaErrorCudartUnloading (error 29) due to "driver shutting down" on CUDA API call to cudaFree. 
=========     Saved host backtrace up to driver entry point at error
=========     Host Frame:/usr/lib/x86_64-linux-gnu/libcuda.so.1 [0x2e40d3]
=========     Host Frame:./nmt [0x53526]
=========     Host Frame:./nmt [0xfbd9]
terminate called after throwing an instance of '=========     Host Frame:/lib/x86_64-linux-gnu/libc.so.6 [0x3c259]
=========     Host Frame:/lib/x86_64-linux-gnu/libc.so.6 [0x3c2a5]
=========     Host Frame:/lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main + 0xfc) [0x21ecc]
thrust::system::system_error'
=========     Host Frame:./nmt [0x530a]
=========
  what():  driver shutting down
========= Error: process didn't terminate successfully
========= Internal error (20)
========= No CUDA-MEMCHECK results found
Run Code Online (Sandbox Code Playgroud)

是否可以从代码Host Frame:./nmt [0x53526]中判断出哪里被破坏了?如果是这样,我该怎么做?

Rob*_*lla 3

正如 @talonmies 所指出的(我怀疑他不会介意我发布 CW 答案),该cuda-memcheck工具提供了额外的堆栈回溯功能,可以通过--show-backtrace添加到命令行的开关来启用该功能。

反向跟踪可以由主机和设备功能组成(即主机和设备反向跟踪)。

如果应用程序还使用主机调试符号信息进行编译(例如-g在 Linux 上),则cuda-memcheck可以在主机回溯中显示主机函数的函数名称。

文档中提供了其他使用信息。