Domanda

Sto usando ASSERTE macro per verificare la presenza di pre-condizioni. Secondo la sua definizione si sta usando ASSERT_BASE, che a sua volta chiama _CrtDbgReportW per stampare il messaggio. Da dove viene l'uscita _CrtDbgReportW va?

Parto dal presupposto che, se l'applicazione viene avviata dal debugger, che sarebbe andata finestra debugger. Dove sarebbero i messaggi vanno se non è sotto debugger?

È stato utile?

Soluzione

L'uscita per _CrtDbgReportW dipende come lo si imposta. Di default lo invia al OutputDebugString API.

I debugger intrappolare l'uscita OutputDebugString e normalmente li visualizza nella finestra del debugger come lei suggerisce.

Ci sono anche applicazioni che intrappolano l'output come DebugView che è possibile utilizzare per le applicazioni per PC.

Aggiornamento: ho perso il bit di Windows Mobile. Ho ancora beleave che è uscita al OutputDebugString, ma non so di qualsiasi applicazione di terze parti che funziona. L'unico modo che conosco per intrappolare l'uscita OutputDebugString sotto Windows Mobile è di utilizzare la funzioni di debug DebugActiveProcess / WaitForDebugEvent per intrappolare gli eventi OUTPUT_DEBUG_STRING_EVENT e scriverli fuori da qualche parte

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top