3

私は自分が持っているObjective-Cプログラムを分析して元に戻そうとしています。

いくつかのオペコードを手動で変更することにより、実行可能ファイルにいくつかの変更を加えました。ただし、変更したソフトウェアをテストすると、

殺された:9

それは結構です、私は私がすべきでない何かに触れたと思います。gdb myprogramその後、エラーを分析するために起動しました。ここで何か(私には奇妙な)が起こりました:ブレークポイントを設定しない場合、プログラムはSIGKILLを受け取りますが、シグナルを受信する行の数行前にブレークポイントを設定しようとすると、何も起こらず、プログラムは機能しているように見えます大丈夫。

ここから私の質問:ブレークポイントはプログラムフローを変更しますか?
答えが「いいえ」の場合、私が書いた情報では解決できないと思いますので、質問してください。正しい方向を示すためのヒントや提案があれば幸いです。

MacOS10.7.4とを使用してgdb 6.3.50 (Apple version gdb-1752)います。ソースコードにアクセスできないと仮定します。

4

1 に答える 1

1

コードの動作を変更するブレークポイントの最大の原因は、競合状態です。基本的には次のようになります。

Without breakpoints:
    make some asynchronous request
    do something with response
    ERROR because request hasn't responded yet

With breakpoints:
    send some asynchronous request
    wait for user to continue
    response arrived while waiting for the continue
    do something with response
    OK!
于 2012-08-23T01:28:50.643 に答える