常用网站:
CPP : http://www.cplusplus.com/
linux man pages(linux 系统本地也有) : https://linux.die.net/man/
stack overflow : https://stackoverflow.com/
DEBUG 工具:
CGDB : https://www.gnu.org/software/gdb/download/
gcc -g 保留debug 信息,设定程序断点,通过print 打印变量在当前的值
使用gdb 调试程序:
gdb ./a.out
l:(打印出10 行代码,可指定开始行数)
b: 设置断点在某行或某个函数
r: 执行程序到某个断点
p: 可打印当前某个参数的值,或者 p ++age[0] 执行某个参数更改,会对后续程序操作产生影响
c: 继续执行,直到下一个断点
n: 执行下一条语句,并暂停
Valgrind : https://www.valgrind.org/
主要用于查看内存泄漏,多线程同步问题. 例如动态分配内存后,没有释放内存,编译/运行不会出错,这个可以告诉你程序在哪里出现内存泄漏
31 .gdb 使用方法:
a. 编译时候要有 -g;
b. 使用时候 gdb ./a.out
c. l 或者 l 20 //会列出带行号10行的程序
d. b func 或者 b 行号 //设定程序断点
e. r //程序开始运行,需要传参的,后面跟参数就可以了
//前面设定断点的,会暂停在断点位置
f. p 表达式:例如 l ++arg[0] //表示在当前断点出运行这个表达式,并查看它的值
print &i //对变量值更改,会对之后程序运行造成影响
g. n (next 意思) //程序会执行暂停后下一条语句,并再次暂停
h. c (continue 意思) //程序会继续执行到下一个断点再暂停
基础命令(深入理解计算机系统):
1. DEBUG 方式: g++ -DDEBUG 编译实现是否要使用DEBUG,编译条件必须是DDEBUG(两D)
#ifdef DEBUG
#define log(frm, args...) {\
printf("func=%s:line=%d\n", __func__, __LINE__);\
printf(frm, ##args);\
}
#else
#define log(frm, args...)
#endif
include <math.h> :编译方式 gcc 127_ojx.c -lm
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)