在gdb内部,什么命令会提供被调试进程的pid?大部分googleresults仅讨论知道pid后如何将gdb附加到进程。 最佳答案 一个简单的方法是infoferior。这里我自己调试gdb,这个命令显示了被调试对象的PID:(top-gdb)infoinferiorNumDescriptionExecutable*1process14068/home/tromey/gdb/build/gdb/gdb你也可以只调用普通的C函数:(top-gdb)printgetpid()$3=14068
我使用VisualStudio2015社区版构建了一个应用程序。当我的一些用户尝试运行它时,他们收到以下错误:Theprogramcan'tstartbecauseapi-ms-win-crt-runtime-l1-1-0.dllismissingfromyourcomputer.Tryreinstallingtheprogramtofixthisproblem.很明显,这可以通过安装UpdateforUniversalCRuntimeinWindows来解决。(KB2999226)。我可以在安装脚本期间检查修补程序,但我发现的所有方法都是toosloworunreliable.如何防
我有一个带有printDebug方法的类。它没有在代码中的任何地方使用,但我想在使用gdb调试时使用它(使用调用)。这基本上是以格式良好的方式打印对象的内容,例如我可能有一个集合vector。用于此的g++选项是什么?我试过-O0但这不起作用。我使用的解决方法是在构造函数中进行伪调用以调试打印并提供一个bool值来指示您是否真的想要打印或什么都不做。这工作正常,但必须有更好的方法来做到这一点。如果我理解正确-O0不应该做任何优化,所以不应该消除死代码,但也许我错了。 最佳答案 如果您有一个未在代码中任何地方使用的方法,gcc智能功能
我正在使用nlohmann'sjsonC++implementation进行一个项目.如何在GDB中轻松探索nlohmann的JSON键/值?我试过用这个STLgdbwrapping因为它为探索nlohmann的JSON库正在使用的标准C++库结构提供了帮助。但是我觉得不方便。这是一个简单的用例:jsonfoo;foo["flex"]=0.2;foo["awesome_str"]="bleh";foo["nested"]={{"bar","barz"}};我想在GDB中拥有什么:(gdb)pfoo{"flex":0.2,"awesome_str":"bleh","nested":etc
这个问题在这里已经有了答案:Whygdbcastingisnotworking?(4个回答)关闭6年前。从此链接gdbinterpretmemoryaddressasanobject我们知道,如果类类型A的对象位于特定地址,例如0x6cf010,那么我们可以使用:(gdb)p*(A*)0x6cf010打印此对象的成员元素。但是,当涉及c++命名空间时,这似乎不起作用。也就是说,如果类类型为A::B的对象,那么下面的所有尝试都不起作用:(gdb)p*(A::B*)0x6cf010(gdb)p*((A::B*)0x6cf010)那么,谁知道在这种情况下如何打印对象元素呢?我们可以使用以下经
我的问题听起来很具体,但我怀疑它仍然可能是C++调试问题。我正在使用omnet++来模拟无线网络。omnet++本身就是一个c++程序。我在运行我的程序时遇到了一个奇怪的现象(在Ubuntu12.04中使用omnet++4.2.2修改了inet框架):当触摸代码的某个部分时,程序以退出代码139退出(人们说这意味着内存碎片),当我尝试调试时,gdb不会报告模拟之前退出的“有问题”代码有任何问题,实际上,调试会通过这部分代码并输出预期结果。gdb版本信息:GNUgdb(Ubuntu/Linaro7.4-2012.04-0ubuntu2.1)7.4-2012.04谁能告诉我为什么运行失
已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭7年前。Improvethisquestion我想在Linux上制作一个GDB命令行程序的小型GUI版本,以便更轻松地调试小型C程序.可能已经存在一些,特别是在IDE中,但我想让它变得有趣并让GDB更好地了解它。现在我想知道GDB是否有API,这样我就可以直接从代码中访问GDB命令,而不必通过终端绕道而行,例如使用popen。如果GDB中不存在这样的API,那么最简单的方法是启动GDBhidden并向
我积极使用C++11功能。我在VisualStudio2013中创建了依赖lambda来运行多个线程的程序(lambda表示任务,线程接收它必须运行的lambda实例)。Lambda在静态库中定义并链接在可执行文件中,该可执行文件从该可执行文件创建的线程调用它。当我尝试使用GDB调试此应用程序的Linux版本时,看起来GDB无法进入包含lambda的方法。它不能在这个函数中设置断点,当我尝试进入时,它甚至会进入lambda从其主体调用的方法,但是在这些方法的return之后它不会进入lambda主体,它转到lambda调用的下一个方法等。有没有办法用GDB调试lambdasbody?
我刚刚开始使用c++异常,并且想把它弄好。我的想法是在捕获异常时生成某种回溯信息。最初我的想法类似于Call-stackforexceptionsinC++但最终发现这不太好。我也看过HowtogenerateastacktracewhenmygccC++appcrashes但不想给我当前的项目增加更多的复杂性。因为,我只需要在Debug模式下进行回溯,我希望我可以为此目的使用gdb。我的策略是在catchblock中插入断点,然后向上遍历调用堆栈以准确查明首先引发异常的原因(或导致异常的原因)?不幸的是,我似乎无法做到这一点,因为当gdb到达断点时,它会清除调用堆栈,我只能看到mai
我正在使用Eclipse(HeliosSR1)CDT进行C++开发。Eclipse与GDB接口(interface)进行调试,但我不知道如何在通过Eclipse接口(interface)进行调试时手动向GDB输入命令。例如,如果能够输入pmyVar而不必单击并滚动局部变量窗口,那就太好了。注意:我想使用Eclipse界面进行调试的唯一原因是因为我喜欢它显示正在逐步执行的代码的方式。因此,如果有人有其他建议可以让我查看正在逐步执行的代码,请提出建议!(我用过DDD,但不是特别喜欢。) 最佳答案 其实很简单。开始调试(eclipse会切