spacemacs 使用gdb

xiaoxiao2021-02-27  330

1. 编译工程时用-g参数

2. 进入编译好的二进制程序所在的目录,M-x gdb

3. 会提示正确的命令,如果没有自己补上

gdb -i=mi example 4. 会自动打开多个buffer,如下图

左上buffer用来输入gdb命令,左中buffer显示入口文件main.cc代码,

用M-m 加数字可以跳到指定的buffer

5. 到main.ccbuffer后,使用C-x C-a C-b设置断点, 删除断点是C-x C-a C-d

6. 回到左上的buffer,输入run,后面可以带参数

(gdb) run "abc" 7. 右上的buffer会显示local变量的值

MyApp & app @0x877fa8: {config_ = std::unique_ptr<Configuration> containing 0x8a6260} Configuration * config 0x8a6260 mongocxx::v_noabi::instance inst <complex data type> mongocxx::v_noabi::client conn <complex data type> mongocxx::v_noabi::collection collection <complex data type> mongocxx::v_noabi::cursor cursor <complex data type> std::__cxx11::string mongo_url <complex data type> bsoncxx::v_noabi::builder::stream::document document <complex data type> const std::exception & e <error reading variable> 一堆complex data type,不友好,以后解决。

8. 可以在左上的gud buffer中用print打印变量值

(gdb) p argv[0] $3 = 0x7fffffffdfec "/home/dean/work/gitlab/gitlab.com/mystudy/mongodb/code/simple/builder/bin/example"

n 可以单步运行

c  运行直到遇到下一个断点才会停止

9. 右中的buffer显示标准输入输出

功能命令默认快捷键添加断点gud-breakC-x C-a C-b 或 C-x <SPC>删除断点gud-removeC-x C-a C-d运行/继续程序gud-go无单步执行,无视函数gud-nextC-x C-a C-n单步执行,进入函数gud-stepC-x C-a C-s跳出当前函数gud-finishC-x C-a C-f运行到光标所在语句gud-untilC-x C-a C-u继续运行程序gud-contC-x C-a C-r

10. 右下显示断点名称和线程。

转载请注明原文地址: https://www.6miu.com/read-4269.html

最新回复(0)