質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

9833閲覧

gdbでcoreファイルを開いたら、debug-infoが無いと言われた。installを試みたが駄目だった。

nrhk

総合スコア14

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

1クリップ

投稿2017/07/16 08:57

###前提・実現したいこと
gdbでsegmentation faultの原因を突き止める練習をしようとしたら、debug infoがない言われて、backtraceの内容が読めない(ように思う)

以下のサイトを丸写しして、練習しようとしました。
http://d.hatena.ne.jp/JiaLu/20120113/1330396897

debug-infoのインストールを2種類試みましたが駄目でした。

###発生している問題・エラーメッセージ

$gdb core.19267 GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-94.el7 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 "x86_64-redhat-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... [New LWP 19267] Missing separate debuginfo for the main executable file Try: yum --enablerepo='*debug*' install /usr/lib/debug/.build-id/c7/41ea6f7a21345e23923d10673b43c1c5586e6d Core was generated by `./test'. Program terminated with signal 11, Segmentation fault. #0 0x00007f033c93fa8d in ?? () "/path/to/core.19267" is a core file. Please specify an executable to debug.

上記のサイトだと、こんな感じででるはずなのに、

Core was generated by `./test2'. (test2がCoreを吐いている) Program terminated with signal 11, Segmentation fault. (シグナル11でプログラムが終了され、セグメンテーション違反発生) Reading symbols from /lib/tls/libc.so.6...done. Loaded symbols for /lib/tls/libc.so.6 Reading symbols from /lib/ld-linux.so.2...done. Loaded symbols for /lib/ld-linux.so.2 #0 0x0058668b in _IO_default_xsputn_internal () from /lib/tls/libc.so.6 (最終実行ステップはlibc.so.6ライブラリの_IO_default_xsputn_internal()関数内にある)

###試したこと

(1)gdbのエラーメッセージに従ってみた。 >> 解決せず

yum --enablerepo='*debug*' install /usr/lib/debug/.build-id/c7/41ea6f7a21345e23923d10673b43c1c5586e6d

(2)Redhatのサイトに下記を実行 >> 解決せず
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Developer_Guide/intro.debuginfo.html

一番したのコマンドをやってみた。

# yum --enablerepo='*-debug*' install $(eu-unstrip -n --core=./core.19267 | sed -e 's#^[^ ]* \(..\)\([^@ ]*\).*$#/usr/lib/debug/.build-id/\1/\2#p' -e 's/$/.debug/')

###補足情報(言語/FW/ツール等のバージョンなど)
CentOS Linux release 7.2.1511 (Core)
gcc バージョン 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-94.el7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

gdbでcoreファイルを使ってプログラムのデバッグをする時はプログラムファイルとcoreファイルの両方を指定します。質問者さんの今回のケースはプログラムファイルの指定が抜けてしまっているため、プログラムファイルの情報が読み込めない状態にあります。
gdbのエラーメッセージからすると、プログラムファイルは./testのようですので、gdbを実行する際に、以下のように指定して実行します。

gdb ./test core.19267

投稿2017/07/16 09:19

archiver

総合スコア1557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nrhk

2017/07/17 00:18

ありがとうございます。解決しました。 これからgdbの本を読む前に、軽くググッたサイトで練習を、と思ったのですが、やはりコマンドの使い方のような基礎はちゃんと読まないといけませんね。反省です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問