Linux NSight轮廓仪信号139

Linux NSight轮廓仪信号139,linux,cuda,nvidia,nsight,Linux,Cuda,Nvidia,Nsight,我试图在NSight中使用内置探查器评测我的程序,但评测会话在启动后立即终止,我收到反馈“警告:应用程序收到信号139”。这是什么意思 我还收到以下错误消息: 无法读取整个会话时间线。显示的时间线可能会 由于应用程序中止或失败,因此为空或不完整 退出前刷新配置文件数据。应用程序应该调用 cudaDeviceReset(),以确保所有配置文件数据 脸红了 您的程序需要一些命令行参数吗?调试器和探查器可能没有从配置中正确选择CLI选项。您需要在Nsight用户属性或探查器的活动页面中指定它们。在Ns

我试图在NSight中使用内置探查器评测我的程序,但评测会话在启动后立即终止,我收到反馈“警告:应用程序收到信号139”。这是什么意思

我还收到以下错误消息:

无法读取整个会话时间线。显示的时间线可能会 由于应用程序中止或失败,因此为空或不完整 退出前刷新配置文件数据。应用程序应该调用 cudaDeviceReset(),以确保所有配置文件数据 脸红了


您的程序需要一些命令行参数吗?调试器和探查器可能没有从配置中正确选择CLI选项。您需要在Nsight用户属性或探查器的活动页面中指定它们。

在Nsight中,转到配置文件配置,然后转到探查器选项卡。取消选中“
启用并发内核评测”

检查
启动启用评测的应用程序
为我修复了它。默认情况下,它是打开的,但我想要显式控制,所以最初将其关闭。禁用
并发内核评测
也起到了作用,但它会阻止您评测具有动态并行性的应用程序。

这看起来像是一个分段错误。您的程序是否按预期工作并正常返回?我彻底检查了分段错误,但程序按预期工作,cuda memcheck未发现任何错误。作为记录,调试模块也不工作。
cuda memcheck
需要
nvcc
选项
-g-g
来编译代码-g和-g在编译期间使用是的。程序将两个文件名作为输入,并尝试打开它们。如果我认为程序找不到相关文件,则无法打开相关文件;如果我认为程序确实找到了相关文件,则发出信号139,具体取决于启动评测时我使用的参数。答案适用于Nsight Visual Studio Edition。在Linux/Unix上,信号139来自分段故障。分段错误可能是由应用程序或注入应用程序的分析代码引起的。要诊断问题,可以在main()函数的顶部添加一个getchar。这将暂停您的应用程序。通过Visual Profiler或Nsight Profiler启动应用程序。将调试器(gdb或eclipse gdb)附加到进程。将电脑移到getchar()之外。当您遇到分段错误时,gdb或eclipse将包含该错误的调用堆栈。根据您的反馈,分段错误最可能的原因是参数检查和围绕命令行参数的错误处理不足。我建议您检查是否在探查器启动设置中正确指定了命令行参数和工作目录。只是一个观察:我得到了相同的行为。在Linux术语窗口中运行时,使用相同的文件/WorkingDir/Arguments,一切正常。当分析器运行它时,我在计算循环的中间得到139 MSG。(远远超过参数检查)我的参数列表有11项。选择单内核评测,可以防止此问题。也许我需要设置一个env变量,这就是问题所在