一、Linux编程环境
1. 程序编辑器:
命令模式:
i(insert):插入
a(after):之后插入
x():删除字符
dd:删除一行
:行号进行指定
:/字符串:搜索字符串
:q,退去
:wq
ndd:删除n行
yy:复制当前行
p:粘贴
ny:从当前航开始复制
2. gcc
gcc -s text.c
gcc -c text.c
gcc -o text text.c
gcc -o text test1.o text2.o
二、调试工具
1. gdb
执行调试命令:gdb test;
列出代码行:l(list);
设置断点:b(break);
运行程序:r(run);
继续运行:c(continue);
单步运行:n(next);
退出gdb:q(quit);
删除断点:delete, d ;
运行shell命令:shell command
如果想执行gdb调试,格式 :gcc -Wall --c -g
2. mtrace(内存跟踪)
主要用于malloc、realloc、free的日志信息;
操作步骤:
1. 注册环境变量MALLOC_TRACE:export命令或者putenv()函数,
2. 内存分配都要放入函数mtrace()和函数muntrace()函数之间,日志文件将会记录;
3. 打开日志看内存使用内存情况;
export M
ALLOC_TRACE = ./mymemtrace.log
#include "stdlib.h" #include "stdio.h" #include "string.h" #include "mcheck.h" int main() { <span style="white-space:pre"> </span>char *tmp; <span style="white-space:pre"> </span>printf("hello\n); <span style="white-space:pre"> </span>mtrace(); <span style="white-space:pre"> </span>tmp = (char*)malloc(100); <span style="white-space:pre"> </span>memset(tmp, 0, 16); <span style="white-space:pre"> </span>*tmp = 123455; <span style="white-space:pre"> </span>free(tmp); <span style="white-space:pre"> </span>muntrace(); <span style="white-space:pre"> </span>return 0; }
可以使用addr2line查看具体申请的地址和四方地址的代码;可以有帮助与分析内存泄露;
3. hook函数
钩子函数hook()对内存经行跟踪;
4. Binutil工具
add2line:
ar:归档文件
as:输出汇编文件,
ld:连接器
nm:列出文件的符号
objcopy:
objdump:显示文件
ranlib:产生归档文件
readelf:显示elf文件信息
size:段的大小
版权声明:本文为博主原创文章,未经博主允许不得转载。