2009-04-08 5 views
1

J'ai un programme que je veux lancer dans Debian mais quand je le lance, j'obtiens une erreur de segmentation. Cela a déjà fonctionné dans Debian. Y at-il des commandes que je peux exécuter pour voir quel peut être le problème? De quelles libs il a besoin et si c'est un exécutable valide du tout?Rechercher des informations sur le fichier d'application linux

Répondre

0

strace ou gdb. Strace imprimera la trace des appels système, gdb program permet de taper bt après un plantage et de voir la trace de la pile.

6

Pour un type de démarrage

whereis programname 

pour obtenir l'emplacement de l'exécutable, sa documentation, et (éventuellement) son code source sur votre système. Puis tapez

file `which programname` 

pour voir si elle est un exécutable valide. Puis tapez

/lib/ld-linux.so.* --list `which programname` 

pour voir les bibliothèques partagées du programme afin de fonctionner.

Enfin, le type

ulimit -c unlimited 
programname 
gdb `which programname` core 
where 
q 

pour obtenir l'emplacement précis de l'accident.

Exemple:

$ whereis perl 
perl: /usr/bin/perl /usr/bin/X11/perl /usr/share/man/man1/perl.1.gz 

$ file `which perl` 
/usr/bin/perl: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.4, dynamically linked (uses shared libs), stripped 

$ /lib/ld-linux.so.* --list `which perl` 
     linux-gate.so.1 => (0xffffe000) 
     libnsl.so.1 => /lib/libnsl.so.1 (0xb7f56000) 
     libdl.so.2 => /lib/libdl.so.2 (0xb7f51000) 
     libm.so.6 => /lib/libm.so.6 (0xb7f28000) 
     libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7ef1000) 
     libutil.so.1 => /lib/libutil.so.1 (0xb7eec000) 
     libpthread.so.0 => /lib/libpthread.so.0 (0xb7ed2000) 
     libc.so.6 => /lib/libc.so.6 (0xb7d76000) 
     /lib/ld-linux.so.2 (0xb7f92000) 

$ ulimit -c unlimited 
$ perl 
^\Quit (core dumped) 
$ gdb `which perl` core 
GNU gdb (GDB; openSUSE 11.1) 6.8.50.20081120-cvs 
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 "i586-suse-linux". 
For bug reporting instructions, please see: 
<http://bugs.opensuse.org/>... 
(no debugging symbols found) 
Core was generated by `perl'. 
Program terminated with signal 3, Quit. 
#0 0xffffe430 in __kernel_vsyscall() 
(gdb) where 
#0 0xffffe430 in __kernel_vsyscall() 
#1 0xb7fd2b93 in __read_nocancel() from /lib/libpthread.so.0 
#2 0x081bcb9b in PerlIOUnix_read() 
#3 0x081be025 in PerlIOBuf_fill() 
#4 0x081bc402 in PerlIOBase_read() 
#5 0x081bc571 in PerlIO_getc() 
#6 0x0812121e in Perl_sv_gets() 
#7 0x081f11e1 in Perl_filter_read() 
#8 0x081f15e3 in ??() 
#9 0x081facc9 in Perl_yylex() 
#10 0x08210674 in Perl_yyparse() 
#11 0x080d844f in ??() 
#12 0x080dc372 in perl_parse() 
#13 0x08063ff8 in main() 
(gdb) quit 

Exemple:

Questions connexes