2011-11-22 9 views
5

Il mio programma funziona alla grande con Windows XP. Sto cercando di aggiungere qualche altra funzionalità e usando OutputDebugString() per mostrare alcune informazioni di debug. funziona perfettamente su XP. Ora quando voglio usare lo stesso programma su Windows 7x64. Non vedo alcun output in DebugView.OutputDebugString() non funziona su Windows 7x64

F1!F1!F1!

+0

'OutputDebugString' funziona correttamente in 7 x64. 'DebugView' mostra anche l'output delle applciations. –

risposta

11

Siamo spiacenti per il recupero di una vecchia domanda, ma abbiamo trascorso un paio di giorni alla ricerca in Internet per rispondere a questa e alla fine ha finito per registrare una chiamata di connessione. Sto postando qui per aiutare qualcun altro nella stessa situazione. Il nostro problema specifico era ottenere l'output da OutputDebugString, MFC TRACE ecc. Nella finestra di output di debug durante il debug di un'applicazione x64 in modalità mista.

Secondo Microsoft, apparentemente per il debug di applicazioni in modalità mista x64 il tipo di debugger di "auto" (impostato nella pagina di proprietà Debugging-> Tipo di debugger) viene impostato su "gestito" anziché su "misto". Questo deve essere impostato in modo esplicito su "Misto" per vedere sia l'output di debug gestito che quello nativo quando si esegue il debug di una build a 64 bit.

+1

Nel mio caso, stavo chiamando la stringa di debug di output da un'estensione IE. IE in generale non consente tale comunicazione. Così ho finito per eseguire IE come amministratore e anche eseguire DebugView come amministratore. – vrrathod

+0

Nel mio caso, stavo chiamando OutputDebugStringW. La modifica di questo in OutputDebugStringA ha funzionato correttamente. –

3

3 piccoli suggerimenti:

  1. assicurarsi in realtà si sta catturando eventi (menu in alto -> cattura -> cattura win32 è contrassegnato)
  2. se il programma è in esecuzione in bassa integrità (fornisce un avvertimento di sicurezza quando lo si sta eseguendo) è necessario eseguire la vista di debug anche in bassa integrità. per farlo è necessario modificare il livello di integrità di dbgview.exe prima di eseguirlo.
  3. se si utilizza Visual Studio e si esegue con debugger (premuto F5), l'output di debug viene effettivamente acquisito da Visual Studio (nella finestra di output). prova a eseguire il tuo programma con ctrl f5.
2

Ci sono diversi motivi per cui questo può o non può funzionare. Ho disattivato per sbaglio questo - qui ci sono tutte le cose che dovete controllare per ottenere questo lavoro:

  1. è il testo di output di debug ottenendo reindirizzato dal riquadro Output al riquadro Immediate, quindi non si è visto esso? Per disattivare questa off:

    • Debug
    • Options and Settings
    • [ ] Redirect all Output Windows text to the Immediate Window
  2. è il riquadro Output visibile?

    • Debug
    • Windows
    • Output
  3. Nel riquadro Output avete Program Outputabilitato?

    • Debug
    • Windows
    • Output
    • tasto destro del mouse in qualsiasi punto all'interno del riquadro
    • [x] Program Output
  4. Avete il diritto Debugging Type selezionato?

    • Nel Solution Explorer (Visualizza> Esplora soluzioni) riquadro
    • fare clic destro sul vostro progetto
    • Properties
    • Debugging
    • Debugging Type: passaggio da Auto a uno Native o Mixed
  5. Il debugger ha provato ad essere collegato prima dell'avvio del programma? Per disattivare Attachoff:

    • Nel Solution Explorer (Visualizza> Esplora soluzioni) riquadro
    • fare clic destro sul vostro progetto,
    • Properties
    • Debugging
    • Attach: modifica No
  6. Stai utilizzando OutputDebugStringW()? Prova a utilizzare OutputDebugStringA() invece.

  7. Infine, hai avviato il programma in modalità di debug? :-) Ehi, non si sa mai!

    • Debug
    • Start Debugging (F5)

non avevo mai visto un elenco completo prima in modo quanto sopra sono tutte le cose che ho dovuto verificare sono stati fissati in modo corretto.