내 프로그램을 실행하려고 시도하면 main() 함수가 실행되지 않고 중단됩니다. 그래도 내 프로그램은 ntdll.dll을 여러 번 호출 한 후 스택에서 첫 번째 호출로 내 클래스 중 하나에서 예외를 throw합니다. 예외는 내 프로그램이 "< bad ptr>"으로 응답하지 못하게하는 요인 인 것 같습니다. 내가 설정 한 중단 점을 트리거 할 수 없으므로 문제가 발생한 지점을 찾기가 더 어려워집니다.ntdll.dll 실행시 C++ 프로그램이 응답하지 않는다
1
A
답변
3
충돌을 일으킨 시스템 호출을 파악해야합니다. 일반적으로 이러한 종류의 문제는 일부 Windows API에 가비지를 전달한 결과입니다.
디버거를 사용하고 호출 스택을 살펴보십시오. 코드 안에있는 마지막 항목이 문제의 원인 일 수 있습니다. 아마도 제대로 처리되지 않는 나쁜 데이터가있을 것입니다.
1
글로벌 개체/싱글 톤을 사용하는 것처럼 들립니다. 이들 중 하나가 서로에 의존하면 문제가 발생합니다. 나는 당신의 모든 전역을 찾고 각각의 생성자에 중단 점을 넣을 것입니다. 한 글로벌이 다른 글로벌을 사용하고 있지만 두 번째 글로벌은 아직 구축되지 않은 것처럼 보입니다.
마지막으로 이것이 원인이 아니며 응용 프로그램이 타사 DLL을로드하는 경우 충돌 할 수 있습니다. 한 번 orbix 및 ms 메시지 대기열 dll이 하나의 클래스로 분류되는 것이 다른 하나보다 먼저로드 된 것을 기억합니다. 다른 방법으로로드 된 경우 모든 것이 작동했습니다. 결국이 문제를 발견하기 전까지 빈 메인으로 남았을 때까지 모든 것을 제거한 다음 문제를 발견 할 때까지 하나씩 추가하기 시작했습니다.
관련 문제
- 1. 소켓 프로그램이 응답하지 않는다
- 2. DataGridView가 채워진 후 응용 프로그램이 응답하지 않는다
- 3. Window 쉘에서 Java 프로그램이 응답하지 않는다
- 4. 소켓 상호 작용 중에 프로그램이 응답하지 않는다
- 5. Ant 작업 외부 프로그램이 응답하지 않는다
- 6. System.Timers.Timer 지연 응용 프로그램이 응답하지 않는다
- 7. httpsURLConnection.getInputStream() 응답하지 않는다
- 8. WebDev.WebServer.EXE가 응답하지 않는다
- 9. 스레드를 실행하는 동안 다중 스레드 Python 응용 프로그램이 응답하지 않는다
- 10. 수천 개의 행을 추가하는 동안 응용 프로그램이 응답하지 않는다
- 11. NT 서비스의 CreateProcess가 응답하지 않는다
- 12. 가입시 SQL 쿼리가 응답하지 않는다
- 13. NSURLConnection, tableview GUI가 응답하지 않는다
- 14. 응용 프로그램이 응답하지 않습니다
- 15. SQL Server 2005에서 SPROC가 응답하지 않는다
- 16. XAML에 컬렉션이 선언되어 Silverlight가 응답하지 않는다
- 17. VS 2010/SQLServer 2005 디버깅이 응답하지 않는다
- 18. 홀수 메시지 및 처리가 응답하지 않는다
- 19. 스윙을 통해 LDAPConnection을 가져올 때 응답하지 않는다.
- 20. WinForms 응용 프로그램이 응답하지 않음
- 21. ntdll.dll 맵 파일 필요
- 22. ASP.NET 응용 프로그램이 응답하지 않게 됨
- 23. SendMessage() DDE 서버에 연결할 때 WINAPI 응답하지 않는다
- 24. ServerSocket.accept - Java에서 프로그램이 응답하지 않음 - Java
- 25. Hibernate가 HSQLDB 파일 기반 DB에 접속할 수 없음, 응답하지 않는다.
- 26. WPF Windows 7 응용 프로그램이 응답하지 않습니다.
- 27. 호출 후 ASP.NET 응용 프로그램이 응답하지 않습니다.
- 28. SQL 쿼리 실행시 응용 프로그램이 강제 종료 됨
- 29. Visual C# - 실행시 예외 확인
- 30. fork()를 호출 한 후 SSL_accept가 응답하지 않는다
더 많은 정보를 추가합니다. 즉, 스택 덤프시 스택 덤프, 커널에 호출되는 API 호출 및 충돌 주변 소스입니다. –
ntdll 지점은 스레드가 커널로 전환 될 때 사용됩니다. 전체 스택을 추가하십시오. –