私のプラットフォームはubuntu i686(32ビット)です
デバッグ オプションを使用して gcc ドライバーを使用してアセンブリ ソースをコンパイルする場合:
gcc -nostartfiles -g -o toupper toupper.s
emacsエディターに統合されたgdbデバッガーでtoupper実行可能ファイルを開きます
$ emacs toupper.s-> M-x gdb -> M-x gdb-many-windows
最初の命令でブレークポイントを生成しました
(gdb) b _start
(gdb) run
run コマンドで実行を開始すると、デバッガーは _start ラベルで正しく停止します。
同じソース toupper.s を as アセンブラーでコンパイルし、ld リンカーでリンクすると、次のようになります。
as -g -o toupper.o toupper.s
ld -o toupper toupper.o
これで、デバッグの手順が gcc のケースと一致しました。
$ emacs toupper.s -> M-x gdb -> M-x gdb-many-windows
(gdb) b _start -> mark with a red point the _start line
(gdb) run -> DONT HIT THE _start LINE ¿?
シンボル テーブルは正しく、ブレークポイントは正しいことを示していますが、実行は段階的に行われていません。
gcc ケースで詳細な手順を表示し、as/ld ケースで再試行しましたが、結果は同じです
as/ld ケースと一致しない gcc ケースのデフォルト オプションがありますか?
前もって感謝します