2016-05-22 10 views
0

私はエコーなどの他のコマンドにフックしてみましたが、うまくいきます。しかし、xコマンドをフックすると、失敗します。ここに私の.gdbinitファイルのコードがあります。gdbのコマンドxにどのようにフックできますか?

set $pince_injection_failed = 1 
set $pince_debugging_mode = 0 
define hook-x 
    if $pince_injection_failed = 1 
    echo asdf 
end 

define hookpost-x 
    if $pince_debugging_mode = 0 
    echo zxcv 
end 

gdbはフックする関数のエイリアスを受け入れないことを知っています。しかし、xはすでに完全な関数ですか?私はそれのための別名を見つけることができませんでした。私はそれについても疑問に思っています。単一の文字がコマンドのために短すぎるためです。

+1

'フック-X 'およびGDB 7.7.1で私のために' hookpost-X'仕事の終わりに行方不明end。どのバージョンでこの問題が起こっていますか?修正された古いバージョンのバグかもしれません。また、 '$ pince_debugging_mode = 0'が常にfalseになることに注意してください。おそらく '$ pince_debugging_mode == 0'が必要です。 'if'を終了させる' end'ステートメントがないと、コマンドが機能しなくなる可能性もあります。 –

+0

私のバージョンは7.7.1です。私はちょうど.gdbinitファイルを使用する代わりにgdbセッションで 'define hook-x'を実行しようとしました! .gdbinitファイルで何が間違っている可能性がありますか? 編集:ああ、また、if文の先端 EDIT2の感謝:私はこのようgdbinitの最小限のバージョンを書き込もうとしました: は '定義フック-X は1 end' をエコーそしてそれはまた、 – Desertricker

+1

ができ動作しませんでした.gdbinitファイルの最初の行と最後の行に 'echo'コマンドを追加して、gdbがそれを読み込んでいるかどうかを確認します。 –

答えて

0

私はこのソリューションをMark Plotnickのおかげで見つけました。それは私の別の欠陥のように思えます、私は間違った終わりを持つ関数があることを知ったので、すべての関数は、その関数がgdbによって自然に無視された後に来ました。

define keks 
    set $lel=0 
    while($lel<10) 
    x/x 0x00400000 
    set $lel = $lel+1 
end 

お知らせwhileループ

関連する問題