C与C++区别 makefile文件 gdb调试 | 您所在的位置:网站首页 › 安装gdb › C与C++区别 makefile文件 gdb调试 |
C与C++区别
gcc .cpp -> c++语法 编译 不能链接c++库 .c ->c语法 g++ .cpp 都通过c++语法编译 .c 预编译 编译 汇编 链接(《程序员自我修养》中有总结)预编译 gcc -E main.c -o mian.i 删除注释,进行宏替换,增加行号及文件名标识,处理所有条件的预编译指令,保留所有的#pragma指令 编译 gcc -S main.i -o main.s 将预处理完的文件进行一些列的词法、语法、语义分析及优化生成汇编代码 汇编 gcc -c main.s -o main.o 汇编器将所有的汇编代码转化为汇编指令 gcc -o main main.o 生成可执行程序 linux 可执行程序格式 ELF 格式 windows 可执行程序格式 PE 格式 机器指令 101001 汇编代码 mov 高级语言c/c++ linux虚拟地址空间相关面试题 在《c专家编程》5 6 7章 《 程序员自我修养》 makefile文件 管理工程 实现自动化编译 add.c max.c main.c all: main 最终生成的程序 main: main.o max.o add.o 依赖关系 gcc -o main main.o max.o add.o 生成规则 main.o:main.c gcc -c main.c max.o:max.c gcc -c max.c add.o:add.c gcc-c add.c gdbl 显示代码 b 加断点 info break 查看断点信息 delete+断点编号 删除断点 r 运行程序 n 单步执行 p 打印 s 进入函数 finish 退出函数 c 继续执行 display 连续打印 bt 显示函数栈调用信息 多进程调试 (gdb) attach +pid 添加调试进程 set follow-fork-mode child/parent 设置跟踪子进程或父进程 多线程调试 info threads - 显示可以调试的线程 thread id 切换到指定线程 set scheduler-locker-locking off on step off 不锁定,所有线程都可以执行 on 锁定 只有当前线程可以执行 step 单步执行时只有当前线程执行 core 调试 如何检测内存泄漏 程序崩溃时 生成core文件 -》快速找到出错的地方 所程序是逻辑错误,没有崩溃core找不到 ulimit -a 可以查看core文件 0表示未开启 ulimit -c +size 设置core文件大小上限 strace 跟踪系统调用 ltrace 跟踪库函数 内存检测工具有什么 |
CopyRight 2018-2019 实验室设备网 版权所有 |