release版本不可被调试,debug版本可以,原因是,debug版本下编译器形成可执行程序的时候会给可执行程序添加调试信息
1 myprocess-debug: myprocess.c
2 gcc -std=c99 -o $@ $^ -g
3
4 .PHONY: clean
5 clean:
6 rm -f myprocess-debug
readelf -S myprocess-debug
readelf 是一个用来显示 ELF(Executable and Linkable Format)文件信息的工具。-S 选项用于显示 ELF 文件的节头部信息(section headers)。通过这个命令,你可以查看包含在 ELF 文件中的不同节(section),这些节可能包括代码段、数据段、符号表、字符串表等
#include<stdio.h>
int AddToTarget(int a,int b)
{
int sum=0;
for(int i=a;i<=b;i++)
{
sum+=i;
}
return sum;
}
int main()
{
printf("run begin...\n");
int result=0;
result=AddToTarget(1,100);
printf("result:%d\n",result);
printf("run end...\n");
return 0;
}
gdb binFile
退出: ctrl + d
或 quit
调试命令:
list/l: l文件名:行号/函数名,I行号/函数名
list/l 函数名:列出某个函数的源代码。
delete(d) breakpoints:删除所有断点 delete breakpoints n:删除序号为n的断点
disable breakpoints:禁用断点 enable breakpoints:启用断点
display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay(编号):取消对先前设置的那些变量的跟踪