デバッグ技法/ブレークポイントを利用する


Top / デバッグ技法 / ブレークポイントを利用する

ブレークポイントを利用する

ブレークポイントを利用するとデバッグが楽になるときがあります。
これは実験的な機能です。近い将来変更が行われるでしょう。

これは何か?

任意のリニアアドレスにハードウェアブレークポイントを1つセットすることができます。
特定のリニアアドレスの実行/読み書きをトリガにして情報を取得します。
これを利用して例えば、変数の意図しない書き換えの瞬間を捕まえることができデバッグに役立つでしょう。

挙動

ブレーク条件が揃うとカーネルはその時点での

一般的なブレークポイントと違い、実行が実際にブレークされる訳ではないことに注意してください。
これは現時点での Mona の特有の制限です。

使いかたの例

ある変数 hoge の書き換えを捕まえたい場合

// ブレークポイントを設定
syscall_set_watch_point(&hoge, DEBUG_BREAK_ONLY_ON_WRITE);

...
// ブレークポイントを解除
syscall_remove_watch_point();

第一引数にリニアアドレスを、第二引数にブレーク条件フラグを指定します。
ブレーク条件フラグは以下の4種類。

DEBUG_BREAK_ONLY_ON_EXECUTE命令実行時にのみブレーク
DEBUG_BREAK_ONLY_ON_WRITEデータ書き込み時にのみブレーク
DEBUG_BREAK_ONLY_ON_IOI/O 読み取りと書きこみ時にブレーク
DEBUG_BREAK_ONLY_ON_READ_WRITEデータ読み取りと書き込み時にブレーク

ログ出力例

===== debug fault start ===========================================================
address=0xA003784C value=0x90160000
name=HAPPY.EX5 tid=78
eax=0x00000000 ebx=0x0000004E ecx=0x00000000 edx=0x00000000
esp=0xEF7FE844 ebp=0xEF7FE87C esi=0x90160000 edi=0x00001000
cs =0x0000002B ds =0x00000033 ss =0x0000003B cr3=0x0034C000
eflags=0x00000286 eip=0xA002CFE7
===================================================================================

制限

コメント

コメントはありません。 コメント/デバッグ技法/ブレークポイントを利用する?

お名前:

MENU

now: 4

リンク


最新の20件
2018-10-07 2018-09-20 2018-09-03 2018-05-09 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-05-29 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 6173, today: 1, yesterday: 1

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:02 (3888d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.023 sec.