我有以下示例代码
#include<stdio.h>
int main()
{
int num1, num2;
printf("Enter two numbers\n");
scanf("%d",&num1);
scanf("%d",&num2);
int i;
for(i = 0; i < num2; i++)
num1 = num1 + num1;
printf("Result is %d \n",num1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我使用-g选项将此代码编译为gcc.
gcc -g file.c
Run Code Online (Sandbox Code Playgroud)
生成单独的符号文件
objcopy --only-keep-debug a.out a.out.sym
Run Code Online (Sandbox Code Playgroud)
从a.out中删除符号
strip -s a.out
Run Code Online (Sandbox Code Playgroud)
在gdb中加载此a.out
gdb a.out
Run Code Online (Sandbox Code Playgroud)
gdb说"找不到调试信息"很好.然后我在gdb中使用add-symbol-file命令
(gdb) add-symbol-file a.out.debug [Enter]
The address where a.out.debug has been loaded is missing
Run Code Online (Sandbox Code Playgroud)
我知道gdb有一个其他的命令符号文件,但它会覆盖以前加载的符号.所以我必须使用此命令在gdb中添加许多符号文件.我的系统是64位运行ubuntu LTS 12.04 …