[解決済み] GDB からソースがないとのクレーム
質問事項
Ubuntu 12.10 64bitで動作しています。
私は、GDBで簡単なアセンブリプログラムをデバッグしようとしています。しかし、GDBのguiモード(-tui)は、私のアセンブリファイルのソースコードを見つけることができないようです。私は現在のディレクトリでプロジェクトを再構築し、無駄にGoogleを検索しました、ここで私を助けてください。
私のコマンド
nasm -f elf64 -g -F dwarf hello.asm
gcc -g hello.o -o hello
gdb -tui hello
デバッグ情報は読み込まれているようで、main()でブレークポイントを設定できるのですが、画面の上半分にはまだ' [ No Source Available ]です。 '.
ここにhello.asmがありますので、興味のある方はご覧ください。
; hello.asm a first program for nasm for Linux, Intel, gcc
;
; assemble: nasm -f elf -l hello.lst hello.asm
; link: gcc -o hello hello.o
; run: hello
; output is: Hello World
SECTION .data ; data section
msg: db "Hello World",10 ; the string to print, 10=cr
len: equ $-msg ; "$" means "here"
; len is a value, not an address
SECTION .text ; code section
global main ; make label available to linker
main: ; standard gcc entry point
mov edx,len ; arg3, length of string to print
mov ecx,msg ; arg2, pointer to string
mov ebx,1 ; arg1, where to write, screen
mov eax,4 ; write command to int 80 hex
int 0x80 ; interrupt 80 hex, call kernel
mov ebx,0 ; exit code, 0=normal
mov eax,1 ; exit command to kernel
int 0x80 ; interrupt 80 hex, call kernel
解決方法は?
この場合の問題は、アセンブラがデバッガ用の行番号情報を生成していないことです。つまり、ソースは存在するのですが(gdbで"list"を実行すると、ソースファイルのリストが表示されます - 少なくとも私があなたの手順に従っているときはそうでした)、デバッガはファイルから行番号情報を必要として、どのラインがどのアドレスに対応するのかを知ることができます。与えられた情報ではそれができないのです。
私が調べた限りでは、NASMに、以下のような.locディレクティブを発行させる方法はないようです。
as
を使用する場合
gcc
などがあります。しかし
as
はソースファイルを読み込むことができず、大量のエラーが発生します(-msyntax=intel -mmnemonic=intel を使っても、うまくいくはずです)。
ですから、もっと賢い人が、デバッガの行番号情報を与える.locエントリーを生成する方法を考え出さない限り、あなたが満足するような方法で質問に答えられるかどうかは、まったくわかりません。
関連
-
[解決済み】ハイフン(-)で始まるファイル名を処理する方法は?
-
[解決済み】WSL - GEDIT サーバーを開始することができません。接続できませんでした。接続が拒否されました[closed]。
-
[解決済み] usr/bin/env bash」と「#!/usr/bin/bash」の違いは何ですか?
-
[解決済み] GNUアセンブラを使ってx86_64でprintfを呼び出す
-
[解決済み] svn diffコマンドの使用
-
[解決済み] シェルで 'exec ls' を実行すると何が起こるか、またその理由は?[クローズド]。
-
[解決済み] 共有ライブラリの読み込み中にエラーが発生しました: libncurses.so.5:
-
[解決済み] STRACEがEAGAINを表示する理由(リソースが一時的に使用できないため)
-
[解決済み] エラーです。"gzip: stdout: Linuxカーネルアップグレード中に「No space left on device」(デバイスに空き容量がない)が発生する(空き容量がある間)[closed]。
-
[解決済み] 負荷警告: エントリ シンボル _start が見つかりません
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] usr/bin/env bash」と「#!/usr/bin/bash」の違いは何ですか?
-
[解決済み] CHECK_NRPE: Error - SSLハンドシェイクを完了できませんでした。
-
[解決済み] Gccコンパイル "オブジェクトファイルのサフィックスを計算できない: コンパイルできない"
-
[解決済み] Bashスクリプトでスクリプトファイル名を知るには?
-
[解決済み] MongoDBへの接続が拒否された errno 111
-
[解決済み] Linuxです。WGET -i オプションを使用したスキームが見つからない
-
[解決済み] mvで移動先のディレクトリが存在しない場合、作成させる方法はありますか?
-
[解決済み] ユーザーデータスクリプトは私のカスタムAMIでは動作しませんが、標準のAmazon linuxでは動作しています。
-
[解決済み] Tarエラーです。アーカイブ内の予期しないEOF
-
[解決済み] VIMでの検索と置換の結果、末尾の文字が表示される