2012-04-29 12 views
1

64ビットLinuxのyasmでアセンブルされたasmコードのデバッガを探して、使用するために助けが必要です。 gdbデバッガは、シンボルテーブルがロードされていないと不満を持ち続けます。 stackoverflowの誰かが-dstabsスイッチを使って組み立てを提案しましたが、それは私には違いがありません。どちらもdddに違いはありません。yasmで作成されたアセンブリコードのデバッグ

「シンボルテーブルがロードされていません」という問題を取り除く方法が見つかった場合、gdbはそれほど悪くないでしょう。私はまた、レジスタや他の宣言の内容を見ることができる必要があります。

yasm -f elf -m amd64 file.asmを使用して自分のasmファイルをアセンブルし、ld file.o -o fileとリンクします。 -lスイッチを使用してyasmを使用して.lstファイルを作成することは機能していないようです。

この問題に関して私が見つけたすべてのアドバイスは、gccをリンカーとして使用し、ldではなく関連させるようです。私はldにリンクする必要があります。

+1

組み立て時に '-g'オプションを使ってみましたか? – Job

+1

@ジョブ:ありがとう!私はそれが働いたと思う。私はgdbからいくつかの新しい情報を得ています。私のために働いたのはコマンド 'yasm -f elf -m amd64 -g stabs file.asm'です。 gdb_dbgfmtsのmanページは、stabsがUNIXオペレーティングシステムの適切なデバッグフォーマットであることを示唆していましたが、私はデバッグフォーマットを理解していません。より良い選択肢がありますか? – InvalidBrainException

+0

私はドワーフを使用することをお勧めします、私の答えを参照してください。 – Job

答えて

5

-gオプションをyasmに使用する必要があります。私はdwarf2形式を使用することをお勧めします。これは現代の標準であるようです。

yasm -f elf -m amd64 -g dwarf2 file.asm 
+1

dwarf2の提案に感謝します。 gdbで 'step'を実行するたびに複数の行をスキップする問題を修正したようです。 – InvalidBrainException

-1

は、私は現在のシステムのプログラミングを取っている、と私たちは-g dwarf2フラグを使用して、デバッグに使用ddd。これまでのところうまくいきました。

+0

dddはgdbのGUIフロントエンドです。 – gps

+0

私は知っている...彼は彼が "レジスタと他の宣言の内容を見たい"と言いました。おそらく、変数とレジスタの値をコマンドラインに出力しなければならないという豪華な混乱を好むかもしれませんが、すべての情報が非常に分かりやすく表示されていることがわかります。 Gdbは良いデバッガです。彼は提案を求め、私はそれを与えた。私は常に改善の余地があります。 – Arod529

関連する問題