2011-03-07 2 views

답변

2

아무도 아직 답을 얻지 못 했으므로 Ruby + SWIG를 디버깅 할 때 유사한 상황에서 우리가하는 것을 제공 할 것입니다.

SWIG에서 생성 한 C# Source, SWIG에서 생성 한 C++, C# 단위 테스트 및 나머지 Quantlib 원본이 포함 된 Visual Studio 프로젝트를 만듭니다.

나는 Visual Studio 솔루션 파일을 제공하고있는 SWIT 타겟을 보았지만, 불행한 일이지만, C++ 소스가 적어도 있다면 디버그 모드로 빌드 할 수 있습니다. . 어려운 부분은 호출중인 C# DLL이 해당 호출에서 특정 C++ DLL을 참조 할 것으로 예상한다는 것입니다. C++ Quantlib 디버그 라이브러리를 C# 프로젝트의 Debug 폴더로 옮겨야하므로 원하는 특정 버전을 찾을 수 있습니다.

솔루션을 구성했으면 디버그 기호로 모든 것을 디버그 또는 rel로 빌드하십시오.

이 시점에서 C# 바인딩 소스와 동일한 솔루션에있는 Quantlib C++ 소스가있는 경우 C# 또는 C++의 모든 부분에서 중단 점을 설정하고 하나에서 호출을 단계별로 수행 할 수 있어야합니다 다른 하나.

우리의 SWIG Ruby 상황에서 우리는 SWIG 생성 CXX 파일 또는 swig로 감싸 인 C++ 라이브러리 소스에 중단 점을 설정할 수 있으며 Ruby 인터프리터가 작성한 호출을 단계별로 실행할 수 있습니다. 우리는 Visual Studio 내에서 시작 프로젝트로 루비를 시작하여이를 수행 할 수 있습니다.

  • 이것은 아마도 핵심 사항 일 것입니다. 동일한 솔루션에서 디버깅 할 DLL과 DLL을로드하는 응용 프로그램 (LoadLibrary 호출이있는 경우에도 C# 또는 Ruby의 경우)을 모두 보유하십시오. 그런 다음 Visual Studio는 디버깅 된 DLL에서 중단 점을 존중합니다. 중단 점이 존중되지 않으면 Microsoft에서 procexp를 사용하여로드 된 DLL과 C# 라이브러리가 원하는 것보다 다른 버전의 C++ 라이브러리를 찾는 지 확인해야 할 수 있습니다.

이 정보가 도움이되기를 바랍니다.

+0

이 덕분에 정말 도움이되었습니다. –

관련 문제