troushoo

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

  1. --/--/--(--) --:--:--|
  2. スポンサー広告

アプリのデバッグメッセージをProcess Monitorに出力

アプリのデバッグメッセージをProcess Monitorに出力
アプリケーションのデバッグメッセージをProcess Monitorに表示する方法を紹介します。

[ステップ バイ ステップ]
(1). アプリケーションの作成
アプリケーションのコードは以下のようになります。
text(= 背景が黄色の部分)の文字列が、Process Monitorに表示されます。

#include "stdafx.h"
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
 
#define FILE_DEVICE_PROCMON_LOG 0x00009535
#define IOCTL_EXTERNAL_LOG_DEBUGOUT (ULONG) CTL_CODE( FILE_DEVICE_PROCMON_LOG, 0x81, METHOD_BUFFERED, FILE_WRITE_ACCESS )
 
int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hDevice = CreateFile( L"\\\\.\\Global\\ProcmonDebugLogger",
        GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
        NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
 
    if ( hDevice != INVALID_HANDLE_VALUE ) {
        /////////////////////////////////////////////////////////
        // ここのtextの文字列がProcess Monitorに表示されます。      //
        /////////////////////////////////////////////////////////
        WCHAR text[] = L"[デモ]プログラムからの出力";  
 
        DWORD textlen = (wcslen(text)+1) *sizeof(WCHAR);
        DWORD nb = 0;
 
        BOOL ok = DeviceIoControl( hDevice, IOCTL_EXTERNAL_LOG_DEBUGOUT,
            text, textlen, NULL, 0, &nb, NULL );
        if ( ok ) {
            printf( "wrote debug output message\n" );
        } else {
            printf( "error 0x%x\n", GetLastError() );
        }
 
        CloseHandle( hDevice );
    } else {
        printf( "error %d opening Process Monitor\n", GetLastError() );
    }
 
    return 0;
}
(上記ののコードは、Process Monitorのヘルプの”Injecting Application Debug Messages”のページにのっているものです。)

(2). Process Monitorでイベントのキャプチャ
Process Monitorを起動し、”Show Profiling Events”を有効にした上で、イベントのキャプチャを行います。
Process Monitorでイベントのキャプチャ

(3). (1)で作成したアプリケーションの実行
(1)で作成したアプリを実行します。

(4). Process Monitorにアプリケーションのデバッグメッセージが表示される。
コード中に記述したデバッグメッセージ(= [デモ]プログラムからの出力)が表示されることが確認できます。
Process Monitorにアプリケーションのデバッグメッセージが表示される。

リンク
・Process Monitor (英語)
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx


  1. 2013/01/10(木) 15:57:30|
  2. ツール
  3. | トラックバック:0
  4. | コメント:0
<<Wiresharkでファイアウォールのルールを簡単に作成するTips | ホーム | Visual Studioの役に立つショートカット - コーディング編>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/96-66471f06
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (92)
ネットワーク (76)
Visual Studio (56)
SOS・Psscor2/Psscor4 (25)
WinDbg (25)
Linux (24)
Azure (17)
Tips (20)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

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

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。