• 让mingw gdb支持STL,并自动load .gdbinit


    环境要求:python (2.7版本可以,3.x没测过),mingw官方版(你可能已经有了),gdb2013-02-04(到这里https://code.google.com/p/qp-gcc/downloads/list下载,如果有更新版本,应该也可以,目前2013-02-04是最新版)

    推荐的GDB支持STL的方式是用python script。据说各方面都比那个stl-views-1.0.3.gdb要好(关于这个,可以参考http://blog.csdn.net/someonea/article/details/2979369

    目前mingw官方的GDB是7.6.1,不支持python script。检查其是否支持python脚本的方法是:在gdb终端输入:

    python print sys.version
    如果打印出版本号,就OK,否则,会说该版本gdb不支持
     

    https://code.google.com/p/qp-gcc/downloads/list  这个链接里的GDB是支持python的,你可以下载下来,加到PATH环境变量中的最前端,这样以后从cmd启动就会默认用这个gdb(因为貌似系统读PATH变量是从左向右读的,找到第一个就结束)

    然后在终端运行gdb,输入python print sys.version来验证一下

    然后把下面这段代码保存到pp.gdb里(理论上,任何目录都可以,但是推荐放在个人目录下,如C:Usersyour_username,或者工作目录下,两个地方都放一份也OK)

    python
    import sys
    sys.path.insert(0, 'c:/MinGW/share/gcc-4.7.2/python/libstdcxx/v6')
    from printers import register_libstdcxx_printers
    register_libstdcxx_printers (None)
    end

    注意,上面的目录要根据你实际情况来改,比如,我的是

    sys.path.insert(0, 'D:/MinGW/share/gcc-4.8.1/python/libstdcxx/v6')

    然后,当你启动gdb之后,可以在gdb终端输入source pp.gdb(如果放在个人目录,可能要加上目录前缀),就会加载这里的设置,就可以看STL的内容了

    但是,每次启动都输入一次这个命令还是有点麻烦,我们可以把这句命令放到.gdbinit里,让gdb启动时自动加载

    我发现把.gdbinit放到当前工作目录、gdb.exe所在目录都不行,一个可行的方法是:

    把.gdbinit放到个人目录,如C:Usersyour_username,把pp.gdb放到相同目录,.gdbinit的内容就是source pp.gdb

    然后把windows的环境变量HOME设置为C:Usersyour_username(在我的电脑上,这个环境变量原来是不存在的,你的可能也是如此)

    这样就可以了,以后启动gdb时,就会自动加载.gdbinit,也就自动可以用python脚本来打印STL的内容了,使用方法和打印普通变量相同,就是p variable_name

    参考:

    http://wiki.codeblocks.org/index.php?title=Pretty_Printers

    https://sourceware.org/gdb/wiki/STLSupport

  • 相关阅读:
    SkyWorking基础:6.2版本安装部署
    ZooKeeper基础:快速部署
    Linux基础:uniq命令总结
    Linux基础:seq命令总结
    JavaScript BOM对象
    JavaScript常用项目(更新至19.11.17)
    JavaScript触发器
    JavaScript选择器和节点操作
    小花梨的取石子游戏【博弈】
    杨辉三角打表
  • 原文地址:https://www.cnblogs.com/fstang/p/3888083.html
Copyright © 2020-2023  润新知