韦东山Linux嵌入式课程社区
直播中

区沛仪

7年用户 189经验值
私信 关注

请问debug中无法load源码文件该怎么办?

我的设置基本上和那个教学pdf文档是一样的
command如下

target remote localhost:3333
monitor halt
monitor ARM920t cp15 2 0
monitor step
monitor poll
monitor arm7_9 sw_bkpts enable
load
break _hdr_entry
monitor halt

正常情况下,也就是可以load源代码的情况下是这样提示的:

break _hdr_entry
Breakpoint 1 at 0x4: file ../../src/sysdepend/app_***c2410/monitor.S, line 43.
monitor halt

这样的话,就可以在源代码上一步一步的运行。

而,我用另外一个镜像的时候,却没办法load,这样提示的:

break _hdr_entry
Breakpoint 1 at 0x0
monitor halt
虽然没有提示找不到_hdr_entry,但是也没有找到源代码文件。
这样的话,我就无法源代码调试了。

请问thisway.diy大侠,有没有什么方法解决?
以上2种情况,都是相同步骤,相同编译器下编译的。

回帖(7)

李方树

2019-11-6 08:49:42
你在调什么?什么映象?
举报

陈芸

2019-11-6 08:58:50
我在调试日本的一个OS,t-kernel
有2个镜像,一个是T-Monitor,一个是T-Kernel
T-Monitor类似bootloader,地址是0x0开始的
T-Kernel就是kernel程序,地址是0x20000开始的
编译器用的是Sourcery G++ Lite for ARM EABI

装载T-Monitor的镜像,是可以load源码的
装载T-Kernel的镜像,就不可以

然后我尝试,kernel和monitor一同编译
但是这个镜像也是不能被load的

求教
举报

廖宇婷

2019-11-6 09:10:01
你看看它们的编译地址是什么,如果有编译脚本,就贴出来
举报

刘鹏

2019-11-6 09:21:29
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(__text_start)


SECTIONS {
    .text 0x00000000 : {
        __text_start = .;
        KEEP (*(.init))
        *(.text)
        *(.text.*)
        *(.stub)
        KEEP (*(.fini))
        PROVIDE (__etext = .);
        PROVIDE (_etext = .);
        PROVIDE (etext = .);
        *(.rodata)
        *(.rodata.*)
        *(.rodata1)
        . = ALIGN(10);

    } =0
    ___data_org = .;
    .dest 0x30004440 : AT (___data_org) {
        ___data_start = . ;
        *(.data)
        *(.data.*)
        SORT(CONSTRUCTORS)
        *(.data1)
        KEEP (*(.eh_frame))
        *(.gcc_except_table)
        KEEP (*crtbegin.o(.ctors))
        KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
        KEEP (*(SORT(.ctors.*)))
        KEEP (*(.ctors))
        KEEP (*crtbegin.o(.dtors))
        KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
        KEEP (*(SORT(.dtors.*)))
        KEEP (*(.dtors))
        *(.sdata)
        *(.sdata.*)
        . = ALIGN(4);
        __edata = .;
        PROVIDE (edata = .);
    }
    .bss ALIGN(4) : {
        ___bss_start = .;
        PROVIDE (__***ss_start = .);
        PROVIDE (___***ss_start = .);
        *(.***ss)
        *(.***ss.*)
        *(.scommon)
        PROVIDE (__***ss_end = .);
        PROVIDE (___***ss_end = .);
        *(.bss)
        *(.bss.*)
        *(COMMON)
        . = ALIGN(4);
        _end = .;
        PROVIDE (end = .);
    }
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分