2011-07-29 2 views
1

Visual C++ 코드에서 중단 점 트리거를위한 ​​__debugbreak 문을 소개했습니다./CLR 옵션을 사용하여 프로젝트를 컴파일했습니다. 그러나 실행 중에는 중단 점이 발생하지 않습니다. 왜 이런 일이 생길까요? 내가 쏴 버리기 전에 도와주세요. 이것은 64 비트 실행 파일입니다.__debugbreak 문이 중단 점을 트리거하지 않음

편집 : 이제 DebugBreak() 문을 사용하여 시도해 보았습니다. 이제는 어떤 문이 확실하지 않은지 영원히 걸려 있습니다. dll은 다른 컴퓨터의 클라이언트에서 액세스하는 서버 프로그램에서 사용됩니다. 이것이 문제의 원인입니까? 서버 컴퓨터 자체에서 실행해야합니까? 필자는 클라이언트 시스템에서 디버거 세션을 성공적으로 시작할 수없는 경우에도 중단 점에 대한 메시지를 atleast보고 할 것으로 예상했습니다. .pdb 파일은 dll과 같은 위치에있는 서버에서 사용할 수 있습니다.

업데이트 : 서버 컴퓨터 자체에서 클라이언트 프로그램을 실행하려했지만 여전히 DebugBreak()가 무한 정지를 일으켰습니다. 디버거 세션이 시작되지 않습니다.

답변

0

디버거에서 F9 (중단 점)을 사용할 수없는 이유는 무엇입니까? 그러나 DebugBreak();이 작동해야합니다.

DLL/EXE를 직접로드 할 수없는 경우 "디버그"메뉴에서 "프로세스에 연결"할 수 있습니다 (Visual Studio 사용을 희망 함).

1

나는 어쩌면 당신은 C++

#if DEBUG 
var endTime = DateTime.Now.AddSeconds(30); 
while (!System.Diagnostics.Debugger.IsAttached && DateTime.Now < endTime) 
    System.Threading.Thread.Sleep(10); 

if (System.Diagnostics.Debugger.IsAttached) 
{ 
    System.Diagnostics.Debugger.Break(); 
} 
#endif 
을 위해 그것을 적응할 수, C#에서이 코드를 사용