0

는 다음 감안할 :디버그 정보없이 C++ 코드를 통해 COM DLL (Firefox 플러그인) 메소드를 저수준 디버그하는 방법은 무엇입니까?

  • 오래된 파이어 폭스 플러그인의 32 비트 DLL 코드 파일 (예 : 형식 라이브러리, XSD 및 XSL 항목이 다른 가운데 포함 된 DLL) 소스 코드 나 디버그 정보없이는 원래 코딩 C++ 및 Visual Studio 컴파일은
  • 이 DLL (JS 코드에서 accessable 한 파이어 폭스 플러그인의 함수)의 이름과 내 보낸 된 함수/메소드의 매개 변수,
  • 비주얼 스튜디오 커뮤니티 2013
  • 는 윈도우 7,에서 실행
  • C++ 개발 경험이 있지만 COM 또는 Firefox는 사용하지 않음
  • 인텔 어셈블러 코드를 디버깅와
  • 경험,
  • DLL을 분해 금지하지 않는 코드 라이센스,

나는이 할 싶습니다으로 CPU 수준에 대한 몇 가지 C에 DLL을로드 ++ 코드 및 단계 함수의 코드가 정확히 무엇인지 알아 내야합니다.

어디부터 시작해야 할 지 알려주시겠습니까? 디버그하고 싶은 함수를 호출하기 전에 DLL에 파이어 폭스 관련 초기화가 필요할 수도 있습니다. DLL에 대한 소스 코드 및 디버그 정보없이 Firefox SDK를 사용하여이 작업을 수행 할 수 있습니까? 아니면 DLL을 "알몸으로"로드하고, 오히려 단순한 함수 (어떻게?)의 진입 점을 찾아서 호출 할 수 있습니까?

힌트를 보내 주셔서 감사합니다.

+0

없음 소스 일부 디버그 정보를 얻을 수있는 경우에도 PDB 파일로 dll 파일을 디버깅하는 경우 코드에 제한이 있습니다. https://www.codeproject.com/questions/287477/debug-the-reference-dll-without-source -code-in-sol 및 https://msdn.microsoft.com/en-us/library/ms241613.aspx?f=255&MSPPError=-2147217396 –

+0

모든 업데이트가 필요합니까? 이 문제에 대한 최신 정보를 알려주십시오. –

+0

위에서 쓴 것처럼 DLL에 사용할 수있는 디버그 정보 (예 : PDB 파일)가 없습니다. DLL에서 직접 내 보낸 심볼 테이블 등. – following

답변

0

디버거가 PDB 파일에서 디버깅 정보를로드하고이를 사용하여 기호를 찾거나 프로그램 소스 코드의 현재 실행 상태와 연결하기 때문에 pdb 파일이나 소스 코드가 없으면 dll 파일을 디버그하기가 어렵습니다. Visual Studio는 PDB 파일을 디버깅 중에 정보 디버깅을위한 기본 파일 형식으로 사용합니다. 해당 파일이 없으면 해당 라이브러리를 디버그 할 수 없습니다.

업데이트 : 우리는 동적에서 LoadLibrary() 함수를 사용하여 하나 개의 프로젝트에 DLL을로드하는,하지만 당신은 당신의 DLL 파일로 단계하려는 경우, 그것은 정말 PDB 파일이 필요

. 간단한 샘플은 하나의 pdb 파일을 만들고 하나의 간단한 사용자 정의 dll 라이브러리 프로젝트가있는 동일한 폴더에 둘 수 있다는 것입니다. Visual Studio가 자동으로 디렉토리를 검색하여로드한다고 생각합니다. 디버그 모듈 창에서 정보를 찾을 수 있습니다.

다음의 경우는 당신과 같은 문제가되지 않습니다, 그러나 그것은 또한 DLL 파일이 정말 하나 개의 프로젝트/프로세스에 의해 호출 된 경우가 PDB 파일을로드 할 것을 우리에게 공유 :

Does winbase::LoadLibrary() load .pdbs?

+0

재배치 정보 또한 진입 점 기호는 PDB가 아니라 DLL에 있습니다 (그렇지 않으면 DLL을 전혀 사용할 수 없습니다! Windows에서 DLL 코드를 실행하려면 두 정보가 모두 필요합니다). 저수준 디버그가 가능한 PDB없이 모든 DLL을 디버깅 할 수 있습니다 파일 - 내 마지막 코멘트를 참조하십시오 - "일반 DLL"로 할 수 있지만 COM DLL을 사용하여 수행하는 방법에 대한 세부 사항을 알 수 없습니다. 여기 내 질문에 대한 것입니다. – following

+0

@ following, 난 그냥 내 이전 대답에 몇 가지 정보를 제공하지만, 정말 dll 파일을 단계로 들어가고 싶다면, 그것은 pdb 파일이 필요합니다. –

+0

해체보기에서 모든 PDB 파일없이 모든 코드로 단계 수 있습니다. – following