2016-04-22 16 views
7

Sto eseguendo il debug del programma C++ compilato con MSVC in Windows. Voglio indagare sul problema legato al multi-threading. Quindi inserisco ASSERT nel mio codice e quando il programma raggiunge ASSERT mostra una finestra su ASSERT (finestra Standart [Abort], [Retry], [Ignore]) con proposta di mettere in pausa il programma nel debugger. Premendo il tasto [Riprova] e programma le pause. MA mentre stavo premendo il tasto, altri thread continuano ad essere eseguiti. Quindi la domanda è come fermare immediatamente il programma quando raggiunge un certo punto per vedere quali altri thread stavano facendo in quel momento?Forza il programma C++ da mettere in pausa nel debugger di Visual Studio

risposta

2

si potrebbe desiderare di impostare un punto di interruzione condizionale invece di utilizzare un assert:

breakpoint visual studio

2

Nel caso in cui si vuole fare a livello di codice, utilizzare DebugBreak. (C# ha un equivalente api System.Diagnostics.Debugger.Break)

Nel caso in cui si desideri farlo da ide, dallo msdn page è possibile inserire un punto di interruzione (o interrompere tutte le applicazioni, ctrl + alt + B) da visual studio e quindi controllare l'esecuzione del thread usando "freeze" e "disgelo" nella finestra del thread.

+1

A volte il __debugbreak() intrinseco del compilatore è preferito su DebugBreak (che è un'esportazione kernel32), poiché l'intrinseco è ancora affidabile quando i simboli MS System non vengono caricati nel debugger. –