我有以下示例代码
#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;
}
我用-g选项将这段代码编译为gcc。
gcc -g file.c
生成单独的符号文件
objcopy --only-keep-debug a.out a.out.sym
去除a.out中的符号
strip -s a.out
在gdb中加载此a.out
gdb a.out
gdb说“找不到调试信息”很好。然后我在gdb中使用 add-symbol-file 命令
(gdb) add-symbol-file a.out.debug [Enter]
The address where a.out.debug has been loaded is missing
我知道gdb还有另一个命令 符号文件, 但是它会覆盖以前加载的符号。因此,我必须使用此命令在gdb中添加 许多符号文件
。我的系统是64位的,运行ubuntu LTS 12.04 gdb版本是7.4-2012.04 gcc版本是4.6.3
objcopy –only-keep-debug a.out a.out.sym
如果您希望GDB 自动 加载a.out.sym
,请遵循此处概述的步骤(特别注意,您需要执行“添加.gnu_debuglink
”步骤)。
这个地址代表什么
GDB想要的地址是.text
二进制代码段的位置。要找到它,请使用readelf -WS a.out
。例如
$ readelf -WS /bin/date
There are 28 section headers, starting at offset 0xe350:
Section Headers:
[Nr] Name Type Address Off Size ES Flg Lk Inf Al
[ 0] NULL 0000000000000000 000000 000000 00 0 0 0
[ 1] .interp PROGBITS 0000000000400238 000238 00001c 00 A 0 0 1
...
[13] .text PROGBITS 0000000000401900 001900 0077f8 00 AX 0 0 16
在这里,您想给GDB 0x401900
作为加载地址。
加载项目时出错 无法加载模块FirstWebApp 当我查看详细信息时,它说它找不到我的第一个webapp.iml文件,因此无法加载我的项目。
问题内容: 我正在尝试获取ELF二进制文件的加载地址,但无法按预期工作: 它会输出,但根据显示的内容,它不会指向二进制文件的已加载地址,而是, 因此,除了解析外,还有没有办法检索ELF二进制文件的加载地址?(在这种情况下为0x0848000) 问题答案: 在Linux上,不返回加载ELF二进制文件的地址。而是返回具有成员的成员。因此,您需要以下内容: 但是,尽管有评论说,实际上也不是加载地址。相反
问题内容: 我正在尝试加载本地JSON文件,但无法正常工作。这是我的JavaScript代码(使用jQuery): test.json文件: 什么都没有显示,Firebug告诉我这是未定义的。在Firebug中,我可以看到它是好的且有效的,但是当我复制该行时,这很奇怪: 在Firebug的控制台中,它可以正常工作,并且我可以访问数据。 有人有解决方案吗? 问题答案: 是异步的,所以您应该这样做:
我正在尝试将套接字绑定到以下端口: 但它给出: 为什么会出现这个错误呢?
问题内容: 我正在尝试加载本地JSON文件,但无法正常工作。这是我的JavaScript代码(使用jQuery: test.json文件: 什么都没有显示,Firebug告诉我数据未定义。在Firebug中,我可以看到它是好的且有效的,但是当我复制该行时,这很奇怪: 在Firebug的控制台中,它可以正常工作,并且我可以访问数据。 有人有解决办法吗? 问题答案: 是异步的,所以您应该这样做:
链接地址/虚地址/物理地址/加载地址以及edata/end/text的含义 链接脚本简介 ucore kernel各个部分由组成kernel的各个.o或.a文件构成,且各个部分在内存中地址位置由ld工具根据kernel.ld链接脚本(linker script)来设定。ld工具使用命令-T指定链接脚本。链接脚本主要用于规定如何把输入文件(各个.o或.a文件)内的section放入输出文件(lab2