You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
C言語で書かれたソースコードを読んでいるとき、関数ポインタから呼び出されている機能の実体がどこに書かれているのかを探すのに苦しんだ経験はありませんか? 私はあります、いっぱいあります!! そんなときはどうするかというと・・・ 手順1: まずは気分転換をする! 手順2: そして気合いを入れ直す! 手順3: さらに気力で読み砕く! 手順4: 最後に根性で発見する! これが、ごく一般的な作業手順(?)かと思います・・・(ごめんなさい嘘です) でもまあ、実際にここまで出来れば、そのプログラムの大まかな構成とか癖みたいなものはだいたい把握できているはずなので、他の関数ポインタについてもある程度当たりをつけて見つけだすことが出来るようにはなるかと思います。 ・・・・・が、、できれば気合いと根性を使わずに追えるなら追いたいのが人情ですよね。 straceやltraceを使えばシステムコールやライブラリコ
準備 ソースプログラムのコンパイル時に、オプション -g を付けておく。オブジェクトファイルを作る時には、 % gcc -c -g test.c ソースが一つしかなくて、実行できるプログラム(LM)を直接作成するなら、 % gcc -g -o test test.c の様にすれば良い。-g オプションを付けてコンパイルしておかないと、下記のようにブレークポイントなどの設定ができないので注意。 起動する % gdb LM LM(ロードモジュール)はコンパイル/リンク後に作成される実行可能なプログラムの事を表す。 gdb上でLMを実行する (gdb) run ブレークポイントを付ける ブレークポイントを付けておくと、実行時にそこで停止することができる。 (gdb) break main.c:83 これで、main.c の 83行目の所で実行を停止させることができる。現在設定しているブレークポイ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く