技術メモ -64bit,Device Driver,Camera,programming-
Windows programmingとMachine Visionを中心にした、日頃気づいた技術をメモします。
プロフィール

iamhideyon

Author:iamhideyon
普通の技術者です。
職業プログラマしています。
主に画像入力、画像処理、
画像ビューアー、ネットワ
ークライブラリ等を開発し
ています。
日頃気になった技術や製品
のメモを自分のために、書
き溜めて置きます。アドバ
イスやご指摘がありました
らコメントをください。



カテゴリー



全記事(数)表示

全タイトルを表示



ブロとも申請フォーム

この人とブロともになる



リンク

このブログをリンクに追加する




にほんブログ村 IT技術ブログへ
WinDbg BUG CHECK 解説

WinDbgを用いてデバッグしているとバグチェック(ブルースクリーン)が発生する場合がある。


そこでバグチェック(Bugcheck Analysis )で吐き出されるコメントを調べてみた。


以下Bugcheck Analysis の例。英語の後にコメント入れました。


※バグチェックの一覧はMSDN参照。


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devtest_g/hh/DevTest_g/BCIntro_f55acfed-3296-4e84-8885-c3162fd0ddbf.xml.asp


----------------------------------------------------------------------


*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                        ブルースクリーンの調査                                                   *
*******************************************************************************


ATTEMPTED_WRITE_TO_READONLY_MEMORY (be)
An attempt was made to write to readonly memory.  The guilty driver is on the
stack trace (and is typically the current instruction pointer).
When possible, the guilty driver's name (Unicode string) is printed on
the bugcheck screen and saved in KiBugCheckDriver.


読み取り専用メモリに書き込みを試みました。


試みは、読み出し専用記憶に書かせられました。違法なドライバ(バグ付き)は、スタックトレースにいます(そして一般的に現在の指示ポインター)。
可能な場合には、違法なドライバの名前(ユニコード記号列)は、バグチェック・スクリーンにプリントされて、そしてKiBugCheckDriver(カーネル関数)で保存しました。



Arguments:
Arg1: fffffadf224eb000, Virtual address for the attempted write.
Arg2: 0000000002efe121, PTE contents.
Arg3: fffffadf237d4570, (reserved)
Arg4: 000000000000000a, (reserved)


Debugging Details:


STACK_COMMAND:  kb


FOLLOWUP_IP:
xxxxx!`FrameGrabber::~FrameGrabber'::`1'::dtor$3+2
fffffadf`224ed472 8908             mov     [rax],ecx


FAULTING_SOURCE_CODE: 



SYMBOL_STACK_INDEX:  6


FOLLOWUP_NAME:  MachineOwner


SYMBOL_NAME:  xxxxx!`FrameGrabber::~FrameGrabber'::`1'::dtor$3+2


IMAGE_NAME:  xxxxx.sys


BUCKET_ID:  WRONG_SYMBOLS


Followup: MachineOwner
----------------------------------------------------------------------


 


テーマ:プログラミング - ジャンル:コンピュータ

WinDbg インストールと設定
1.         マイクロソフトWHDC


2.         32ビットバージョンインストール


3.         64ビットインストール


4.         シンボルダウンロード (※OSイメージファイルが必須です)




シンボルとはCodeView(.pdb)ファイルを指します。シンボルにはC/C++の構造体やクラスや変数が格納されており、このファイルがある事でデバッグトレースが可能になります

通常追加するパスは3つです。

 

1.       OSのシンボル

C:\Symbols\local\XPsp2

C:\Symbols\local\W2003Srvsp1

ローカルにインストールされたシンボルパスを指定します。OS毎にフォルダ指定します。

 

2.       OSのシンボル(WEBからの動的ダウンロード)

symsrv*C:\symbols\web*http://msdl.microsoft.com/download/symbols

ローカルに存在しない場合にマイクロソフトのHPから動的にダウンロードできます。※回線速度に影響するので注意。

3.       自分のシンボル

C:\XX\Ver.0.0.0\src\Driver\objchk\i386

自身のドライバのPDBファイルのあるパスを指定。通常はチェックビルド版のパスを指定



!!このシンボルをインストールしないと、デバッグ時のトレース画面にアセンブリ情報しか表示されません。

OS毎にシンボルは用意されています。又、サービスパックでもシンボルは違います。



Boot.ini Windows 2000の例


---------------------------------------------------------------------

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows 2000 Professional" /fastdetect

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows 2000 Professional" /fastdetect /debug /debugport=com1 /baudrate=115200

---------------------------------------------------------------------




テーマ:プログラミング - ジャンル:コンピュータ

WinDbg コマンド/GUI操作


.reload シンボルを再度リロード。pdbをリビルドしたら実行。


lm モジュールの一覧
bp DriverEntry ブレークポイントの設定
!verifier verifierのレポート表示。但しverifier用にpdb作成すう事。
u [address] 該当アドレスの逆汗とシンボル表示


GUI操作。


ctrl + Break  デバッグモードへ突入。ここで任意のドライバにブレークポイントを置く。そしてg又はF5でRunning。


ctrl + I , alt + r  実行イメージ再ロード


ctrl + s,  alt + r  シンボル再ロード


ブルースクリーン。


!analyze -v   BugcheckでターゲットPCが停止したときに実行。Bugcheckの場所やメモリがダンプされる。それからg(F5)でリブート。


テーマ:プログラミング - ジャンル:コンピュータ





FC2 Blog Ranking FC2 Blog Ranking