Linux编程基础
2015-08-31 20:14
543 查看
一、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
可以使用addr2line查看具体申请的地址和四方地址的代码;可以有帮助与分析内存泄露;
3. hook函数
钩子函数hook()对内存经行跟踪;
4. Binutil工具
add2line:
ar:归档文件
as:输出汇编文件,
ld:连接器
nm:列出文件的符号
objcopy:
objdump:显示文件
ranlib:产生归档文件
readelf:显示elf文件信息
size:段的大小
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:段的大小
相关文章推荐
- linux 文件系统解析及相关命令
- linux下安装QT的方法
- 【linux下用C语言编写带图形界面的成绩管理系统附带源代码】
- Linux系统编程笔记
- 在osx下通过vmware无GUI方式运行centos 7
- linux下编译log4cpp的方法
- centos下安装gitlab
- linux C语言实现递归删除文件文件夹功能
- Linux学习笔记--------“./a.out”是什么意思???
- Linux学习笔记------如何执行一个 可执行程序???
- 28个Unix/Linux的命令行神器
- 应该知道的Linux技巧
- Linux安装
- linux下 常用命令
- PHP在linux上执行外部命令
- linux基本命令
- Linux NAT Router 桥作为WAN,桥下接口作为LAN如何使用
- linux运维实战练习-2015年8月27日课程作业
- linux下ppp的移植及ppp0路由设置
- Linux给用户添加sudo权限