草庐IT

cuda-gdb

全部标签

[linux开发工具]小程序--进度条、调试器 - gdb

📙作者简介:RO-BERRY📗学习方向:致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识📒日后方向:偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持目录1.缓冲区2)\n和\r3.进度条ProgressBar.cProgressBar.hMakefilemain.c4.认识gdbgdb是什么gdb的作用5、gdb的使用GDB安装GDB的用法1.缓冲区第一种情况执行结果如下:可以看到程序先执行printf再执行sleep第二种情况执行结果如下:在这里为什么程序先执行sleep在执行printf呢?实际上也并没有先执行sleep再执行printf,C语言执行代码是顺序结构

c++ - 为维数增加(点数)的点云分配 CUDA 设备内存

我正在编写一个程序,我需要:对图像的每个像素进行测试如果测试结果为真,我必须向点云中添加一个点如果测试结果为假,什么都不做我已经在CPU端C++上编写了一个工作代码。现在我需要使用CUDA加速它。我的想法是让一些block/线程(我猜是每个像素一个线程)并行执行测试,如果测试结果为真,则让线程向云中添加一个点。我的麻烦来了:如果我事先不知道要插入到点云中的点数,我如何在设备内存中为点云分配空间(使用cudaMalloc或类似工具)?我是否必须分配固定数量的内存,然后在每次点云达到限制维度时增加它?还是有一种“动态”分配内存的方法? 最佳答案

c++ - 是否可以在同一 gdb session 中跨重新运行保留硬件观察点?

假设我启动了一个gdbsession,并创建了一个断点并运行。断点后,我根据当前执行的某个符号的内存地址创建观察点,并删除原来的断点。一段时间后,我使用Control-C中断程序,仍在gdb中,我发出run命令从头重新启动程序。但是,我想在调试进程重新启动时保留硬件观察点。是否有gdb设置允许我在重新运行时保留硬件观察点?更新:这是重现问题的示例。intmain(){intNeverGoOutOfScope=0;NeverGoOutOfScope=7;while(1);}下面是gdb命令的顺序。break3runwatchNeverGoOutOfScopeinfowatchrun#Af

c++ - 如何在 gdb 输出中隐藏类型信息

我正在调试繁重的模板化代码,并寻找一种在回溯和打印变量时隐藏类型信息的方法。如果您可以只隐藏模板参数,那就更好了,因为它们会使回溯很难阅读。感谢您的支持。 最佳答案 最好的方法是使用gdb插件。我不知道gdb中的native设置(帧过滤器除外)可以达到预期的结果。请查看https://github.com/tromey/gdb-helpers,更具体地说https://github.com/philtweir/gdb-pretty-frame-cpp.我使用了带有自定义模板重代码的gdb-pretty-frame。

c++ - 使用 GDB 在 Windows 下调试 DLL

我有一些项目由几个DLL组成,这些DLL是用MinGW编译的,带有调试信息,另一个项目的EXE目标使用这些DLL(也是用MinGW编译的)。问题是,我需要在那些DLL中的函数上放置断点,但是GDB虽然设置了断点,但只是在运行时默默地忽略了它们。进入它们(使用's'键)只是跳过它们(就像使用'n'键一样)。我怎样才能进入那些DLL?也许我应该为GDB指定一些选项?提前致谢。 最佳答案 确保使用gccoptimizationlevel进行编译标志设置为0(-O0)。 关于c++-使用GDB在

c++ - 使用 GDB 进入模板类

我正致力于用C++实现平衡树,但作业的要求是我必须使用模板类。我想先用int做,然后再转换成模板,但是给我们的测试代码默认使用模板。当我使用g++class.htest.cxx-Wall-g-O0编译我的代码时,一切似乎都工作正常,直到我进入gdb,它不会进入模板实现。我的模板实现文件包含在头文件的末尾,gdb允许我在其中设置断点,但它从未真正进入函数。我一直在通过emacs使用gdb,但它也不能直接在gdb中工作。我希望当GDB到达在那里实现的函数时,该步骤会切换到模板文件,但它告诉我它认为它应该去的那一行并不真正存在。这是一个典型的session:(gdb)breakset.tem

c++ - cuda-memcheck,如何从地址到源代码?

我成功地使用cuda-memcheck获取有关错误内存访问的错误。使用-g-G编译cuda代码给出了很好的源位置,如下所示:=========Error:processdidn'tterminatesuccessfully=========Invalid__global__readofsize1=========at0x00000710in/some/path/somefile.cu:117:some_function=========bythread(0,14,0)inblock(1,16,0)=========Address0x00abac20isoutofbounds现在我尝试使

c++ - 封装 CUDA 内核的最佳方式是什么?

我正在尝试使CUDA项目尽可能接近OO设计。目前,我找到的解决方案是使用Struct来封装数据,对于每个需要一些GPU处理的方法,需要实现3个函数:对象将调用的方法。一个__全局__函数,它将调用该结构的__设备__方法。__device__结构内的方法。我举个例子。假设我需要实现一种方法来初始化结构内的缓冲区。它看起来像这样:structFoo{float*buffer;short2buffer_resolution_;short2block_size_;__device__initBuffer(){intx=blockIdx.x*blockDim.x+threadIdx.x;int

c++ - vector.size() 的 GDB 错误值

一个简单的vector.push_back()导致我的代码出现一些错误:#includeusingnamespacestd;intmain(intargc,constchar*argv[]){vectorstack;stack.push_back(1);stack.push_back(1);//stack.size()becomes467369971afterthisstack.push_back(1);stack.push_back(1);...morepush_back()s...return0;}我正在使用GDB检查它的行为...奇怪的是stack.size()在第二个push_

c++ - 修正贝塞尔函数的精确计算 - 在 CUDA 中使用 netlib Fortran 例程?

我正在处理在CUDA中准确计算零阶I0的修正贝塞尔函数的问题。很长一段时间以来,我一直根据论文使用有理切比雪夫近似J.M.布莱尔,“修正贝塞尔函数I_0(x)和I_1(x)的有理切比雪夫近似”,数学。计算机,卷。28,名词。126,第581-583页,1974年4月。与Matlab提供的结果相比,给出了1e-29数量级的平均误差。不幸的是,对于我正在处理的新应用程序来说,这种看似很高的准确性已经不够用了。Matlab使用由D.E.开发的Fortran例程。阿摩司Amos,D.E.,“复杂参数和非负阶贝塞尔函数的子程序包”,桑迪亚国家实验室报告,SAND85-1018,1985年5月。A