【问题标题】:Find info about linux app file查找有关 linux 应用程序文件的信息
【发布时间】:2009-04-08 05:46:07
【问题描述】:

我有一个程序我想在 debian 中运行,但是当我启动它时,我得到一个分段错误错误。它以前在debian中工作过。 我可以运行任何命令来查看问题所在吗?它需要什么库以及它是否是有效的可执行文件?

【问题讨论】:

    标签: debian


    【解决方案1】:

    对于开始类型

    whereis programname
    

    获取可执行文件的位置、其文档以及(可能)其源代码在您的系统上的位置。 然后输入

    file `which programname`
    

    查看它是否是一个有效的可执行文件。 然后输入

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

    查看程序运行所需的共享库。

    最后,输入

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

    获取坠机的准确位置。

    例子:

    $ 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
    

    例子:

    【讨论】:

      【解决方案2】:

      stracegdb。 Strace 将打印系统调用跟踪,gdb program 允许在崩溃后键入bt 并查看堆栈跟踪。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-18
        • 1970-01-01
        • 2011-03-20
        • 1970-01-01
        • 2017-12-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多