gdbアプリケーションが起動しませんでした。

gdbアプリケーションが起動しませんでした。

エミュレータシェルでgdbを使用してアプリケーションを実行しようとしています。私は次のコマンドを使用します

gdb <path of exe>

ただし、次のエラーによりアプリケーションが起動しません。

Starting program: <path of exe>
[Thread debugging using libthread_db enabled]

Program exited normally.

ただし、実行中のプロセスをgdbに接続すると正常に動作します。

gdb -pid <process_id>

なぜですか?

**

(gdb) b _start
Breakpoint 1 at 0xb40
(gdb) b main
Breakpoint 2 at 0xc43
(gdb) catch syscall exit
Catchpoint 3 (syscall 'exit' [1])
(gdb) catch syscall exit_group
Catchpoint 4 (syscall 'exit_group' [252])
(gdb) r
Starting program: <exe path>
[Thread debugging using libthread_db enabled]

Breakpoint 1, 0x80000b40 in _start ()
(gdb) c
Continuing.
Breakpoint 2, 0x80000c43 in main ()
(gdb) c
Continuing.

Catchpoint 4 (call to syscall 'exit_group'), 0xb7fe1424 in __kernel_vsyscall
    ()

(gdb) c
Continuing.

Program exited normally.
(gdb) 

キャッチポイント4(syscall 'exit_group'呼び出し)、__kernel_vsyscallの0xb7fe1424はどういう意味ですか?もっと探してみるとこんなことがありましたね

Single stepping until exit from function main,
which has no line number information.
__libc_start_main (main=0xb6deb030 <main>, argc=1, ubp_av=0xbffffce4, 
    init=0x80037ab0 <__libc_csu_init>, fini=0x80037b10 <__libc_csu_fini>, 
    rtld_fini=0xb7ff1000 <_dl_fini>, stack_end=0xbffffcdc) at libc-start.c:258
258 libc-start.c: No such file or directory.
    in libc-start.c

しかし、libc.soが存在し、パスを使用してエクスポートしました。

export LD_LIBRARY=$LD_LIBRARY:/lib

なぜロードできないのですか?

ベストアンサー1

もちろん止まらないでしょう。ブレークポイントも設定していません。

つまりb __libc_start_main

このメッセージを見てください。Program exited normally.これは、gdbがそれを起動して正常に実行を完了したことを意味します。

おすすめ記事