【问题标题】:cuda-gdb exits with "[1] stopped" when it hits a kernel callcuda-gdb 在遇到内核调用时以“[1] 停止”退出
【发布时间】:2012-05-15 09:02:26
【问题描述】:

我对 CUDA 还很陌生,在这里我有点不知所措......

我正在尝试在我没有管理员权限的远程计算机上调试我的 CUDA 程序。我用nvcc -g -G 编译我的程序,然后尝试用cuda-gdb 对其进行调试。但是,只要 gdb 调用内核(甚至不必输入它,并且它不会发生在主机代码中),我就会得到:

(cuda-gdb) run
Starting program: /path/to/my/binary/cuda_clustered_tree 
[Thread debugging using libthread_db enabled]

[1]+  Stopped                 cuda-gdb cuda_clustered_tree

cuda-gdb 然后将我转储回我的终端。如果我再次尝试运行 cuda-gdb,我会得到 ​​p>

An instance of cuda-gdb (pid 4065) is already using device 0. If you believe
you are seeing this message in error, try deleting /tmp/cuda-dbg/cuda-gdb.lock.

恢复的唯一方法是kill -9 cuda-gdb 和cuda_clustered_(我假设后者是我的二进制文件的一部分)。

这台机器有两个 GPU,正在运行 CUDA 4.1(我相信 - 安装了很多,但这是我将 PATHLD_LIBRARY_PATH 设置为的那个)并编译 + 运行 deviceQuery 和 bandwidthTest 很好。

如果需要,我可以提供更多信息。我搜索了所有可以在网上找到的地方,但没有找到任何帮助。

【问题讨论】:

  • 在收到[1]+ Stopped 消息后尝试在终端中发出fg 命令:看起来调试器进程由于某种原因已暂停(要自己暂停进程,请按Ctrl-Z)和@987654331 @ 将恢复它并带到前台
  • 不行。它只是与uda-gdb cuda_clustered_tree [New Thread 0x7ffff1c09700 (LWP 6001)][Context Create of context 0x692010 on Device 0] 的行相呼应。否则它似乎死了——我可以输入文本,但是当我按下回车键时什么也没有发生。 Ctrl+C 和 Ctrl+D 也不做任何事情。只有 Ctrl+Z 做任何事情——将其发送到后台,并像以前一样让它成为僵尸进程。
  • 尝试调试一些SDK程序。如果对他们来说cuda-gdb 工作正常,那么您应该将随机错误提交给 nVidia 开发人员。以我的经验,cuda-gdb 因 SEGFAULT 崩溃等情况并不罕见......
  • 嗯,不,它似乎也与演示应用程序一起崩溃。不确定这表明什么。

标签: cuda cuda-gdb


【解决方案1】:

想通了!原来,cuda-gdb 讨厌 csh。

如果你正在运行 csh,它会导致 cuda-gdb 出现上述异常行为。即使从 csh 中运行 bash,然后运行 ​​cuda-gdb,我仍然看到了这种行为。您需要以 bash 的形式启动您的 shell,并且只能以 bash 的形式启动。

在机器上,默认的 shell 是 csh,但我使用 bash。我不允许直接更改它,所以我在我的 .login 脚本中添加了 'exec /bin/bash --login'。

所以即使我在运行 bash,因为它是由 csh 启动的,cuda-gdb 也会出现上述异常行为。摆脱'exec'命令,所以我直接运行csh,上面什么都没有,仍然显示行为。

最后,我不得不让 IT 将我的 shell 直接更改为 bash(经过他们耐心地排除故障后)。现在它按预期工作了。

【讨论】:

    猜你喜欢
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    相关资源
    最近更新 更多