GDB不会加载源文件

  1. 我正在使用arm-linux-gcc来在主机(debian i386)上编译一个简单的C文件-g
  2. 然后将a.out文件复制到目标(arm,uclibc)计算机。
  3. 运行a.out-没关系。
  4. gdb a.out它说,使用GDB(目标)并列出源代码No such file or directory。事实一直如此吗?
  5. 如果我将1.c文件复制到目标,则list命令它列出源代码。

我的问题:

GDB一直都是这样,还是我可以控制其他选项?

您对调试程序有什么建议吗?

一些信息可能会有用:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

// main function

int main(void)

{

int i;

for(i=0;i<3;i++){

printf("i=%d\n",i);

}

return 0;

}

zodiac1111@debian:tmp$ arm-linux-gcc -v

Using built-in specs.

Target:arm-unknown-linux-uclibcgnueabi

Configured with:/home/ldsh/rt9x5/linux/buildroot/buildroot/output/toolchain/gcc-4.3.5/configure \

--prefix=/opt/rt9x5/arm-linux-uclibcgnueabi/usr --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu \

--target=arm-unknown-linux-uclibcgnueabi --enable-languages=c,c++ \

--with-sysroot=/opt/rt9x5/arm-linux-uclibcgnueabi/usr/arm-unknown-linux-uclibcgnueabi/sysroot \

--with-build-time-tools=/opt/rt9x5/arm-linux-uclibcgnueabi/usr/arm-unknown-linux-uclibcgnueabi/bin \

--disable-__cxa_atexit --enable-target-optspace --disable-libgomp --with-gnu-ld --disable-libssp \

--disable-multilib --disable-tls --enable-shared --with-gmp=/opt/rt9x5/arm-linux-uclibcgnueabi/usr \

--with-mpfr=/opt/rt9x5/arm-linux-uclibcgnueabi/usr --enable-threads --disable-decimal-float \

--with-float=soft --with-abi=aapcs-linux --with-arch=armv5te --with-tune=arm926ej-s \

--with-pkgversion='Buildroot 2011.05-dirty' \

--with-bugurl=http://bugs.buildroot.net/ : (reconfigured) /home/ldsh/rt9x5/linux/buildroot/buildroot/output/toolchain/gcc-4.3.5/configure \

--prefix=/opt/rt9x5/arm-linux-uclibcgnueabi/usr --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu \

--target=arm-unknown-linux-uclibcgnueabi --enable-languages=c,c++ \

--with-sysroot=/opt/rt9x5/arm-linux-uclibcgnueabi/usr/arm-unknown-linux-uclibcgnueabi/sysroot \

--with-build-time-tools=/opt/rt9x5/arm-linux-uclibcgnueabi/usr/arm-unknown-linux-uclibcgnueabi/bin \

--disable-__cxa_atexit --enable-target-optspace --disable-libgomp --with-gnu-ld --disable-libssp \

--disable-multilib --disable-tls --enable-shared --with-gmp=/opt/rt9x5/arm-linux-uclibcgnueabi/usr \

--with-mpfr=/opt/rt9x5/arm-linux-uclibcgnueabi/usr --enable-threads --disable-decimal-float \

--with-float=soft --with-abi=aapcs-linux --with-arch=armv5te --with-tune=arm926ej-s \

--with-pkgversion='Buildroot 2011.05-dirty' --with-bugurl=http://bugs.buildroot.net/

Thread model:posix

gcc version 4.3.5 (Buildroot 2011.05-dirty)

arm-linux-gcc -g 1.c

zodiac1111@debian:tmp$ uname -a

Linux debian 3.12-1-686-pae #1 SMP Debian 3.12.9-1 (2014-02-01) i686 GNU/Linux

# uname -a

Linux AT91SAM9-RT9x5 2.6.39 #25 Mon Dec 30 17:40:40 CST 2013 armv5tejl GNU/Linux

# ls -l

total 1

-rwxr--r-- 1 ftp 83 6094 Feb 21 15:19 a.out

# ./a.out 

i=0

i=1

i=2

# gdb -v

dlopen failed on 'libthread_db.so.1' - File not found

GDB will not be able to debug pthreads.

GNU gdb 6.8

Copyright (C) 2008 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law. Type "show copying"

and "show warranty" for details.

This GDB was configured as "arm-unknown-linux-uclibcgnueabi".

# gdb a.out 

<...>

(gdb) list

1 1.c: No such file or directory.

in 1.c

(gdb) break main

Breakpoint 1 at 0x847c: file 1.c, line 8.

(gdb) run

Starting program: /data/a.out

Breakpoint 1, main () at 1.c:8

8 in 1.c

(gdb) step

9 in 1.c

(gdb) p i

$1 = 0

(gdb) step

i=0

8 in 1.c

(gdb) p i

$2 = 0

(gdb) step

9 in 1.c

(gdb) p i

$3 = 1

(gdb)

# ls -l

-rw-r--r-- 1 ftp 83 158 Feb 21 15:51 1.c

-rwxr--r-- 1 ftp 83 6094 Feb 21 15:19 a.out

# gdb a.out 

<...>

(gdb) list

warning: Source file is more recent than executable.

1 #include <stdio.h>

2 #include <string.h>

3 #include <stdlib.h>

4 // main function

5 int main(void)

6 {

7 int i;

8 for(i=0;i<3;i++){

9 printf("i=%d\n",i);

10 }

(gdb)

在主机平台上,如果我

  1. gcc -g 1.c在宿主平台上编译。
  2. 比 或 的1.c文件。
  3. 采用gdb a.out

发生相同的情况。

zodiac1111@debian:tmp$ gdb -v

GNU gdb (GDB) 7.6.2 (Debian 7.6.2-1)

Copyright (C) 2013 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law. Type "show copying"

and "show warranty" for details.

This GDB was configured as "i486-linux-gnu".

For bug reporting instructions, please see:

<http://www.gnu.org/software/gdb/bugs/>.

zodiac1111@debian:tmp$ gcc -v

Using built-in specs.

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=/usr/lib/gcc/i486-linux-gnu/4.8/lto-wrapper

Target: i486-linux-gnu

Configured with: ../src/configure -v --with-pkgversion='Debian 4.8.2-14' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-i386/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-i386 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-i386 --with-arch-directory=i386 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-targets=all --enable-multiarch --with-arch-32=i586 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu

Thread model: posix

gcc version 4.8.2 (Debian 4.8.2-14)

回答:

仔细

阅读GDB文档,尤其是有关源路径的文档。您要使用dir命令

另外,切换到较新的gdb(可能通过gdb从其源代码进行编译)。当前版本是7.7(所以6.8确实很旧)

以上是 GDB不会加载源文件 的全部内容, 来源链接: utcz.com/qa/409967.html

回到顶部