草庐IT

runtime-gdb

全部标签

android - 最终启动顺序出错 无法执行 MI 命令 -gdb-set target-async off

我在Eclipse上有两个项目,一个生成so,另一个是使用它的Android应用程序我正在尝试使用thisguide调试so中的native代码.我将我的应用程序设置为可调试我在Debug模式下启动了我的应用程序我运行ndk-gdb当我运行native调试器时,我得到:ErrorinfinallaunchsequenceFailedtoexecuteMIcommand:-gdb-settarget-asyncoffErrormessagefromdebuggerbackend:Cannotchangethissettingwhiletheinferiorisrunning.Cannot

debugging - 如何在 GDB 中获取内存地址的符号名称?

例如,我知道0x46767f0属于一个NSString*,有什么办法可以找出它是什么NSString来帮助我找到我想要的一些错误? 最佳答案 我相信您正在寻找:infosymbol打印存储在地址addr中的符号名称。如果没有符号恰好存储在addr中,GDB会打印最近的符号及其偏移量。示例:(gdb)infosymbol0x400225_start+5insection.textof/tmp/a.out(gdb)infosymbol0x2aaaac2811cf__read_nocancel+6insection.textof/usr/

c++ - 如何使用 gdb 对 C++ 动态数组进行 "watch"处理?

考虑以下示例:intsize=10,*kk=newint[size];for(inti=0;i如何为整个数组添加监视?我可以一个一个地添加一个watch(kk[0],kk[1]...),但是因为我知道数组的长度是有办法的它自动吗?我的意思是kk[0..size-1]左右。我将NetBeansIDE与cygwing++和gdb一起使用。 最佳答案 试试display*kk@来自打印命令的文档:@isabinaryoperatorfortreatingconsecutivedataobjectsanywhereinmemoryasana

c++ - 仅针对未捕获的 C++ 异常的 gdb 捕获点?

我可以通过使用gdb命令设置捕获点来告诉gdb调试器在引发任何C++异常时立即停止catchthrow但是,有没有办法只在未捕获C++异常(如在C#或Java中)处停止?这会让在某些情况下更容易发现错误。谢谢! 最佳答案 如果一个异常未被捕获,特殊库函数terminate()被自动调用。Terminate实际上是指向函数的指针,默认值是标准C库函数abort().您也许可以在调用abort()时设置断点。函数并从那里识别未捕获异常的位置。breakabort...run...bt您可以安装自己的terminate()函数使用std:

c++ - Mac OS X 上的 Emacs 24 和 GDB 6.3

过去几天我一直在OSXLion上试用Emacs24(预测试24.0.95.1),但在使用新的gdb/MI界面时遇到了一些问题。使用Xcode附带的GDB6.3,但gdb/MI接口(interface)似乎根本没有加载。它似乎试图启动GDBGUD模式,但实际上没有任何命令起作用。我还尝试通过Homebrew安装GDB-7.4。这让我部分在那里。gdb-many-windows界面出现了,但gdb提示始终没有出现。Emacs只是坐在那里吃掉100%的CPU,但并没有变得无响应。我仍然可以打开文件等。我对GDB无能为力。有没有其他人遇到过类似的问题?您是否能够解决它们?如果可以,如何解决?编

c++ - 如何在 gdb 中打印 std::map 值

我有一个std::map继续;我想在gdb中查看cont["some_key"]。当我尝试时p继续[“some_ket”]我收到此消息:您尝试传递给operator[]的参数之一无法转换为函数所需的参数。我正在使用GNUgdbRedHatLinux(6.3.0.0-1.162.el4rh)。谢谢 最佳答案 最新的gdb内置了python支持,因此可以轻松编写一个函数来打印任何STL结构的内容。但是,您必须学习API并编写脚本。幸运的是gcc4.5将附带所需的python脚本,以使gdb智能地处理STL数据结构。编辑:您不必等待GCC

c++ - 在 gdb 中打印整个链表?

我有一个链表structnode{data_tdata;node_t*next;};typedefstruct{node_t*head;node_t*foot;node_t*curr;//foriteratorunsignedintsize;}list_t;有了这个结构,让我们说我定义了一个列表list_t*myList;如何使用GDB打印整个链表? 最佳答案 这应该可以工作(但未经测试):defineplistsetvar$n=$arg0->headwhile$nprintf"%d",$n->datasetvar$n=$n->ne

c++ - 如何为 GDB 加载额外的库?

我正在尝试调试CUDA程序,但是当我像这样启动gdb时:$gdb-i=mi$r我明白了:/home/wvxvw/Projects/cuda/exercise-1-udacity/cs344/HW2/hw:errorwhileloadingsharedlibraries:libcudart.so.5.0:cannotopensharedobjectfile:NosuchfileordirectoryProcessgdb-inferiorkilled(为便于阅读而格式化)(我正在使用M-xgdb运行gdb)如果这很重要,那么CUDA库在.bashrcexportPATH="/usr/loc

c++ - 在 gdb 中显示取消引用的 STL 迭代器

我有一个映射元素的迭代器,我希望gdb向我显示该迭代器的“第一个”和“第二个”元素的值。例如:std::mapaMap;...fillmap...std::map::const_iteratorp=aMap.begin();我可以在代码中使用p.first和p.second,但在gdb中看不到它们。对于它的值(value),在dbx中可以执行“printp.node.second_”之类的操作,但我可以在gbd中找到类似的内容。我完全愿意有一个函数来传递对象类型,但我也无法让它工作。有什么想法吗?谢谢! 最佳答案 这是我的做法:Th

c++ - 远程 GDB 调试

我刚刚花了一整天的时间试图找到一种方法来从QtCreator启用GDB调试。或eclipse。我了解到启动目标应用程序基本上有两种方法:使用ssh(ssh主机gdb)使用gdbserver我能够使用这两种方法远程启动gdb并启动应用程序。但是,GDB从不响应IDE中设置的任何断点。我也不能暂停应用程序来检查程序状态。在QtCreator中,我只是得到一个模糊的堆栈跟踪(实际上我可能一直在查看ssh或gdb的跟踪......)。谁能帮我开始?进展!我发现QtCreator2.0有一个名为“附加和调试远程应用程序”的功能。它基于gdbserver。好消息是它在IDE的断点处停止。但是,有两