Bagikan melalui


Kelas CDebugReportHook

Gunakan kelas ini untuk mengirim laporan debug ke pipa bernama.

Sintaks

class CDebugReportHook

Anggota

Konstruktor Publik

Nama Deskripsi
CDebugReportHook::CDebugReportHook Memanggil SetPipeName, SetTimeout, dan SetHook.
CDebugReportHook::~CDebugReportHook Memanggil CDebugReportHook::RemoveHook.

Metode Publik

Nama Deskripsi
CDebugReportHook::CDebugReportHookProc (Statis) Fungsi pelaporan kustom yang terkait dengan proses pelaporan debug run-time C.
CDebugReportHook::RemoveHook Panggil metode ini untuk berhenti mengirim laporan debug ke pipa bernama dan pulihkan hook laporan sebelumnya.
CDebugReportHook::SetHook Panggil metode ini untuk mulai mengirim laporan debug ke pipa bernama.
CDebugReportHook::SetPipeName Panggil metode ini untuk mengatur komputer dan nama pipa tempat laporan debug akan dikirim.
CDebugReportHook::SetTimeout Panggil metode ini untuk mengatur waktu dalam milidetik bahwa kelas ini akan menunggu pipa bernama tersedia.

Keterangan

Buat instans kelas ini di build debug layanan atau aplikasi Anda untuk mengirim laporan debug ke pipa bernama. Laporan debug dihasilkan dengan memanggil _CrtDbgReport atau menggunakan pembungkus untuk fungsi ini seperti makro ATLTRACE dan ATLASSERT .

Penggunaan kelas ini memungkinkan Anda men-debug komponen secara interaktif yang berjalan di stasiun jendela non-interaktif.

Perhatikan bahwa laporan debug dikirim menggunakan konteks keamanan yang mendasar dari utas. Peniruan identitas untuk sementara dinonaktifkan sehingga laporan debug dapat dilihat dalam situasi di mana peniruan pengguna dengan hak istimewa rendah sedang berlangsung, seperti di aplikasi web.

Persyaratan

Header: atlutil.h

CDebugReportHook::CDebugReportHook

Memanggil SetPipeName, SetTimeout, dan SetHook.

CDebugReportHook(
    LPCSTR szMachineName = ".",
    LPCSTR szPipeName = "AtlsDbgPipe",
    DWORD dwTimeout = 20000) throw();

Parameter

szMachineName
Nama komputer tempat output debug harus dikirim. Default ke komputer lokal.

szPipeName
Nama pipa bernama tempat output debug harus dikirim.

dwTimeout
Waktu dalam milidetik bahwa kelas ini akan menunggu pipa bernama tersedia.

CDebugReportHook::~CDebugReportHook

Memanggil CDebugReportHook::RemoveHook.

~CDebugReportHook() throw();

CDebugReportHook::CDebugReportHookProc

Fungsi pelaporan kustom yang terkait dengan proses pelaporan debug run-time C.

static int __cdecl CDebugReportHookProc(
    int reportType,
    char* message,
    int* returnValue) throw();

Parameter

reportType
Jenis laporan (_CRT_WARN, _CRT_ERROR, atau _CRT_ASSERT).

message
String pesan.

returnValue
Nilai yang harus dikembalikan oleh _CrtDbgReport.

Tampilkan Nilai

Mengembalikan FALSE jika hook menangani pesan yang dimaksud sepenuhnya sehingga tidak diperlukan pelaporan lebih lanjut. Mengembalikan TRUE jika _CrtDbgReport harus melaporkan pesan dengan cara normal.

Keterangan

Fungsi pelaporan mencoba membuka pipa bernama dan berkomunikasi dengan proses di ujung lainnya. Jika pipa sibuk, fungsi pelaporan akan menunggu hingga pipa bebas atau batas waktu habis. Batas waktu dapat diatur oleh konstruktor atau panggilan ke CDebugReportHook::SetTimeout.

Kode dalam fungsi ini dijalankan dalam konteks keamanan yang mendasar dari utas panggilan, yaitu, peniruan identitas dinonaktifkan selama durasi fungsi ini.

CDebugReportHook::RemoveHook

Panggil metode ini untuk berhenti mengirim laporan debug ke pipa bernama dan pulihkan hook laporan sebelumnya.

void RemoveHook() throw();

Keterangan

Memanggil _CrtSetReportHook2 untuk memulihkan hook laporan sebelumnya.

CDebugReportHook::SetHook

Panggil metode ini untuk mulai mengirim laporan debug ke pipa bernama.

void SetHook() throw();

Keterangan

Memanggil _CrtSetReportHook2 memiliki laporan debug yang dirutekan melalui CDebugReportHookProc ke pipa bernama. Kelas ini melacak hook laporan sebelumnya sehingga dapat dipulihkan saat RemoveHook dipanggil.

CDebugReportHook::SetPipeName

Panggil metode ini untuk mengatur komputer dan nama pipa tempat laporan debug akan dikirim.

BOOL SetPipeName(
    LPCSTR szMachineName = ".",
    LPCSTR szPipeName = "AtlsDbgPipe") throw();

Parameter

szMachineName
Nama komputer tempat output debug harus dikirim.

szPipeName
Nama pipa bernama tempat output debug harus dikirim.

Tampilkan Nilai

Mengembalikan TRUE pada keberhasilan, FALSE pada kegagalan.

CDebugReportHook::SetTimeout

Panggil metode ini untuk mengatur waktu dalam milidetik bahwa kelas ini akan menunggu pipa bernama tersedia.

void SetTimeout(DWORD dwTimeout);

Parameter

dwTimeout
Waktu dalam milidetik bahwa kelas ini akan menunggu pipa bernama tersedia.

Lihat juga

Kelas