2017-11-14 23 views
1

adaプログラムをデバッグしようとすると、gdbはソースを見つけることができません。私は実行中の実行可能ファイルが今作成されたものと同じものであることを確認しました。それが使用されているソースディレクトリを私に伝えるために、GDBを取得する方法はありますgdbのデバッグ - 使用中のソースディレクトリのリスト

(gdb) attach 804 
0x0000003de620b68c in ??() 
(gdb) frame 1 
#1 0x0000000000000000 in ??() 
(gdb) frame 0 
#0 0x0000003de620b68c in ??() 

:取り付けの際に、それは、ソースコードに現在の場所に私を取る必要がある場合代わりに、コンソールに次のように表示されます?または、この問題のトラブルシューティングを行う別の方法がありますか?

これは、x86_64-pc-linux-gnuでホストされているGPS 2017(20170515)を起動します。 GNAT Pro 6.4.2(20110614-45)。

+0

「ソースを特定しない」よりも根本的な問題があるようです。GDB *は処理する場所がわかりません。これはGDBをどのように起動したかに関係している可能性があります。代わりに 'gdb -p 804'を試してください。 –

+0

私はGPSのメニューからそれを呼び出しています... – theMayer

答えて

3

gdbにシンボルテーブルを指定していないか、プログラムが削除されたようです。

プログラムにアタッチするときに、gdbにアタッチする実行可能ファイルにシンボルテーブルを読み込ませるよう指示する必要があります。プログラムを-g(デバッグサポート)でコンパイルし、リンクパスがシンボルを削除していないことを確認してください。次のように続いて、GDBを実行します。

gdb myprog -p 804 

をしかし、あなたはまた、(あなたがやったwhayある)付けずに実行し、添付することができます。

あなたはまた、どのようなプログラムファイル 実行するようにgdbを伝えるために シンボルファイルコマンドを使用することができます
gdb myprog 
GNU gdb (GDB) 7.10 for GNAT GPL 2017 [rev=gdb-7.10-ref-199-g7cfc608] 
Copyright (C) 2015 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. 
See your support agreement for details of warranty and support. 
If you do not have a current support agreement, then there is absolutely 
no warranty for this version of GDB. Type "show copying" 
and "show warranty" for details. 
This GDB was configured as "x86_64-pc-linux-gnu". 
Type "show configuration" for configuration details.For help, type "help". 
Type "apropos word" to search for commands related to "word"... 
Reading symbols from prog...done. 
(gdb) attach 804 

(gdb) symbol-file myprog 
Reading symbols from myprog...done. 

あなたのプログラムが削除された場合、GDBは

Reading symbols from prog...(no debugging symbols found)...done. 
を印刷します

シンボルテーブルを読み込んだら、infを使用してgdbで認識されるソースファイルをリストすることができますo sourcesコマンド。これにより、シンボルテーブルで識別されたソースファイルが表示されます。

(gdb) info sources 
Source files for which symbols have been read in: 

.../b__myprog.adb, 
.../b__myprog.ads, 
/build/eglibc-SvCtMH/eglibc-2.19/elf/rtld.c, 
/build/eglibc-SvCtMH/eglibc-2.19/elf/../sysdeps/generic/_itoa.h, 
/build/eglibc-SvCtMH/eglibc-2.19/elf/../sysdeps/unix/sysv/linux/dl-osinfo.h, 
... 

あなたが使用できる別の興味深いコマンドは、infoファイルです。関連するシンボルファイルで特定されたプログラムセクションが表示されます。ダイナミックライブラリがある場合は、そこにも表示する必要があります。

(gdb) info files 
Symbols from "myprog". 
Native process: 
    Using the running image of child Thread 0x7ffff7fb4780 (LWP 32214). 
    While running this, GDB does not access memory from... 
Local exec file: 
    `myprog', file type elf64-x86-64. 
    Entry point: 0x40ac5e 
    0x0000000000400238 - 0x0000000000400254 is .interp 
    0x0000000000400254 - 0x0000000000400274 is .note.ABI-tag 
    0x0000000000400278 - 0x0000000000400cb4 is .hash 
    0x0000000000400cb8 - 0x0000000000403148 is .dynsym 
    0x0000000000403148 - 0x00000000004046b5 is .dynstr 
    0x00000000004046b6 - 0x00000000004049c2 is .gnu.version 
... 
+0

ここにたくさんの良い情報があります - ありがとう。これが私をどこにでも連れて来たら教えてあげるよ。 – theMayer

関連する問題