草庐IT

cuda-gdb

全部标签

c++ - 可以在 gdb 中调用内联函数和/或使用 GCC 发出它们吗?

我们都知道内联函数会使调试变得更加棘手,因为它们可以从堆栈跟踪等中删除。但是假设我想从gdb中调用一个内联函数,并且我知道它的名称和参数。我认为我应该能够做到这一点,但我明白了:Cannotevaluatefunction--maybeinlined我用nm列出了我正在使用的共享库中的符号,发现我要调用的函数不在里面。没什么大惊喜。我想要的是一种生成这些内联函数的可见定义的方法。我可以访问当前包含内联定义的头文件,但我无法真正修改这些头文件。也许有某种方法可以告诉编译器发出它在翻译单元中看到的所有内联函数的定义?或者其他一些可以更轻松地在gdb中调用和检查内联函数结果的技巧?我在Lin

c++ - SDL2 & GDB : program received signal ?,未知信号

让我们从描述发生的事情开始:我正在Windows上使用SDL2库。我可以使用它编译程序,当我运行.exe时,它​​工作得很好。当我尝试使用GDB调试它时出现问题-当代码进入SDL_Init或SDL_OpenAudio函数(可能创建新线程)时,GDB停止,显示“程序收到信号?,未知信号”消息,当我恢复执行时程序崩溃。显然GDB(https://www.mail-archive.com/cygwin@cygwin.com/msg149735.html)中存在与线程命名相关的错误,应该在GDB版本7.11.1-1中修复。起初我使用GCC5.1.0(TDM)和GDB7.6.1,所以我决定更新到

gdb调试常见命令详细总结(附示例操作)

一、简介通过gdb调试我们可以监控程序执行的每一个细节,包括变量的值、函数的调用过程、内存中数据、线程的调度等,从而发现隐藏的错误或者低效的代码,程序的调试过程主要有:单步执行,跳入函数,跳出函数,设置断点,设置观察点,查看变量。本文将主要介绍linux下的gdb调试工具常用的命令和具体的使用实例。二、调试过程介绍2.1编译程序加参数时生成调试信息-g和-ggdb都是令gcc生成调试信息,但是它们也是有区别的选项解析g该选项可以利用操作系统的“原生格式(nativeformat)”生成调试信息。GDB可以直接利用这个信息,其它调试器也可以使用这个调试信息ggdb使GCC为GDB生成专用的更为丰

c++ - GDB 在对象函数调用时中断

我正在调试一个问题,我想中断每个将特定对象作为“this”参数的方法调用。这在GDB中可能吗? 最佳答案 这很容易。您可以使用像bA::aif(this==0x28ff1e)这样的命令。 关于c++-GDB在对象函数调用时中断,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7617194/

c++ - 你如何计算 nvidia(支持 cuda)的 gpu 卡上的负载?

我想知道如何在向卡发送任务时显示显卡能力的百分比。就像Gnome的系统监视器。此外,如何获取设备参数以根据其硬件规范计算百分比nvidia-smi-a如何获得利用率?是否有CudaAPI可以向卡询问此信息? 最佳答案 ProcessHacker这样做(这仅适用于Windows),但它不是特定于CUDA的。我知道它使用了一些未记录的函数——看看theplugin'ssourcecode了解具体方法。 关于c++-你如何计算nvidia(支持cuda)的gpu卡上的负载?,我们在StackO

c++ - Opencv 错误 : no GPU support (library is compiled without CUDA support)

我正在尝试使用CUDA在GPU上使用opencv处理一些图像处理任务。我正在使用ubuntu。我毫无问题地设置了我的两个产品Opencv和Cuda,我确信这一点。但是,当我尝试在eclipse中运行sampleCOde时,出现错误:OpenCV错误:在mallocPitch中没有GPU支持(库在没有CUDA支持的情况下编译),文件/home/muad/Source/OpenCV-2.4.2/modules/core/src/gpumat.cpp,第749行我重做了我的opencv,但我还是明白了。 最佳答案 如文档中所述,您必须使用

c++ - 使用 gdb 调试 C++ 模板

当我在带有模板的函数内部调试时,我如何知道当前函数正在使用哪种模板类型?我试过了pT.它说gdb无法打印类型。如何中断特定模板类型?假设函数foo(...)有2种可能的形式,foo(...)和foo(...).如何设置断点以便gdb仅在第一个使用int的断点处暂停,但不是第二个使用long的?编辑:如果断点可以按行号设置就好了。这有很多很好的理由,例如。函数的初始部分可能需要很长时间才能运行,我希望调试的地方可能在if中声明等 最佳答案 要为所有实例设置断点,请使用:gdb>rbreakFoo只在已知实例上设置断点gdb>break

c++ - VS Code 上的简单 GDB C++ 调试失败并出现 NullReferenceException

我的源代码file.cpp:#includeusingnamespacestd;intmain(){intx=1;inty=2;cout我使用g++-gfile.cpp编译它,然后我的launch.json文件是这样的:{"version":"0.2.0","configurations":[{"name":"(gdb)Launch","type":"cppdbg","request":"launch","program":"${workspaceFolder}/a.out","args":[],"stopAtEntry":false,"cwd":"${workspaceFolder}

c++ - C/C++ 中的 STL、iostream、new、delete for CUDA

我可以在C/C++中为CUDA使用STL、iostream、new、delete吗? 最佳答案 如果您有Fermi级GPU(因此计算能力>=2.0),并且正在使用CUDA4.0或更高版本,那么new和delete都可以使用在设备代码中。不支持STL容器和算法以及iostream。如果您想对CUDA使用“类似STL”的操作,您可能会对Thrust感兴趣模板库。它允许主机代码使用容器类型透明地与GPU交互,并实现许多非常有用的数据并行原语,如排序、缩减和扫描。请注意,这仍然是主机端设备,不能在您自己的内核代码中使用Thrust及其容器。

c++ - 使用 CUDA Thrust 确定每个矩阵列中的最小元素及其位置

我有一个相当简单的问题,但我想不出一个优雅的解决方案。我有一个Thrust代码,它生成包含值的相同大小的cvector。假设这些cvector中的每一个都有一个索引。我想为每个vector位置获取值最低的cvector的索引:例子:C0=(0,10,20,3,40)C1=(1,2,3,5,10)作为结果,我会得到一个vector,其中包含具有最低值的Cvector的索引:result=(0,1,1,0,1)我考虑过使用thrustzip迭代器来完成它,但遇到了一些问题:我可以压缩所有cvector并实现一个任意转换,它接受一个元组并返回其最低的索引值,但是:如何迭代元组的内容?据我所知