Loading

g++ 编译调试

目录

 

g++

我们简单地展示编译命令的写法,以编译 file.cpp 生成 file.exe 为例

g++ [options] (-std=c++11) file file.cpp

options:

选项 作用 选项 作用
-w 关闭警告信息 -I ../include 添加头文件搜索目录( include )
-c 编译生成 .o 文件 -l 指定库文件( libaray )
-o 编译 .o 文件为 .exe 文件 -L 指定库文件搜索目录
-g 开启 gdb 调试 -Wall 输出 warning 信息
-E 输出预处理结果 -D 在编译时定义宏,该宏可以在代码中使用,宏值默认为 1
-S 生成汇编代码 -O -O2 优化编译

示例代码

// -Dname 定义宏 name ,默认定义内容为字符串 1

#include <stdio.h>

int main()
{
    #ifdef DEBUG
    	printf("DEBUG LOG\n");
    #endif
    	prinf("in\n");
}

// 在编译时使用 g++ -DDEBUG main.cpp 则会输出 DEBUG LOG

 

GDB

编译程序时添加 -g 参数,然后才能进行调试;回车键重复上一命令

g++ -g main.cpp -o main

调试的命令参数如下:

命令 作用
help(h) 查看命令帮助
run(r) 运行文件
start 单步执行,运行程序,停在第一行执行语句
list(l) 查看源代码(l n 以第 n 行为中心查看代码,l func 查看具体函数)
set 设置变量的值
next(n) 单步执行(函数直接执行)
quit(q) 退出
display 追踪查看变量值
undisplay 取消追踪
step(s) 单步执行(跳入函数内部执行)
backtrace(bt) 查看函数调用的栈帧和层级关系
info(i) 查看函数内部局部变量的值
finish 结束当前函数,返回到函数调用点
continue(c) 继续执行
print(p) 打印值及地址
b num 在 num 行设置断点
i b 查看所有断点
d num 删除第 num 个断点
enable breakpoints 启用断点
disable breakpoints 禁用断点
watch 当被观察的变量修改时显示
i watch 显示观察点
run argv[1] argv[2] 调用时传参
posted @ 2022-03-17 18:09  Bluemultipl  阅读(567)  评论(0编辑  收藏  举报