c/c++语言开发共享如何使用gdb来探索堆栈/堆?

有谁能请给我一个快速概述/指向我检查C程序的堆栈(和堆?)的方法的文档? 我认为这应该用GDB来完成,但是如果还有其他更直接的选择,那么这应该没问题。

谢谢。

    我使用GDB进行调试的第一种方法是设置断点。 这样做就像这样 –

    prompt> gdb ./x_bstree.c (gdb) #prompt (gdb) b 123 #break at line 123 (gdb) r #start program 

    现在你的程序在程序的第123行停止了。 现在,您可以使用print检查堆栈或堆中的变量。 对于堆栈变量,只需使用print 。 对于堆变量(指针),使用print <*varname> 。 不确定检查堆栈/堆变量有什么特别之处吗?

    当然,要调试multithreading应用程序,您需要使其以单线程模式运行,然后再调整,否则很难预测正在发生的事情。

    对于其他任何东西,有大量的gdb文档,许多网站也提供gdb备忘单

    您可以使用’x’命令转储原始内存

    所以,如果你想查看堆栈或堆的位,请尝试类似的东西

     x/10b &stackvar x/200b &heapvar-20 

    最后一个将显示从heapvar之前的20个字节开始的200个字节。 所以如果你只是malloced你也可以看到堆头

    尝试使用ddd 。 ddd手册

    好。 也许我详细说明一下。 我这样用它。

    使用调试符号编译我的程序:

     gcc -g program.c -o program 

    运行ddd

     ddd program 

    在gui你可以做各种事情,查看机器代码,查看内存等。 环视四周。 在手册中还有一段检查堆栈。 ddd为您提供了良好的界面来检查C程序。

    查看堆栈: gdb> backtrace

    查看当前堆栈帧: gdb> info frame

    查看当前堆栈帧的参数: gdb> info args

    查看当前堆栈帧的局部变量: gdb> info locals

    导航到父堆栈框架: gdb> frame 1

    检查堆栈

    需要了解更多c/c++开发分享如何使用gdb来探索堆栈/堆?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享如何使用gdb来探索堆栈/堆?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979710.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐