arm-linux-gcc
-g
a.out
gdb a.out
No such file or directory
1.c
list
我的问题:
一些信息可能会有用:
源代码1.c文件 :
#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版本
# 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)
如果我将源代码文件1.c复制到同一目录中
# 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现在可以列出源代码。
# 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)
在主机平台上,如果我
gcc -g 1.c
发生相同的情况。
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命令
dir
另外,切换到较新的gdb(可能通过gdb从其源代码进行编译)。当前版本是7.7(所以6.8确实很旧)
gdb