VS2012 빌드와 XBuild 빌드 사이의 어셈블리 정의를 비교할 때 XBuild가 DebuggableAttribute를 생성하지 않는 것으로 나타났습니다. 이 특성이 없으면 기호를 수동으로로드하더라도 Visual Studio 2012로 디버깅 할 수 없습니다.
- 사용 XBuild 당신이 PDB 파일을 생성하는 디버깅하고 주입 할 각 어셈블리에 대한 솔루션을
- 사용 Mono.Cecil를 컴파일 : 다음 단계는 VS2012와 모노/XBuild 컴파일 디버그 어셈블리에 필요한 DebuggableAttribute를이
당신과 XBuild 컴파일 된 프로그램
- 사용 시작
- (아래 코드 참조) "프로세스에 연결/디버그를 ..."VS2012에서 generatin의 실행중인 프로그램을
코드를 디버깅 g pdb 및 DebuggableAttribute 주입 :
string assemblyPath = @"HelloWorld.exe";
var assemblyDefinition = AssemblyDefinition.ReadAssembly(assemblyPath,
new ReaderParameters() { SymbolReaderProvider = new MdbReaderProvider(), ReadSymbols = true});
CustomAttribute debuggableAttribute = newCustomAttribute(
assemblyDefinition.MainModule.Import(
typeof(DebuggableAttribute).GetConstructor(new[] { typeof(bool), typeof(bool) })));
debuggableAttribute.ConstructorArguments.Add(new CustomAttributeArgument(
assemblyDefinition.MainModule.Import(typeof(bool)), true));
debuggableAttribute.ConstructorArguments.Add(new CustomAttributeArgument(
assemblyDefinition.MainModule.Import(typeof(bool)), true));
assemblyDefinition.CustomAttributes.Add(debuggableAttribute);
assemblyDefinition.Write(assemblyPath,
new WriterParameters() { SymbolWriterProvider = new PdbWriterProvider(), WriteSymbols = true});
나는 이것이 가능하다고 믿지 않습니다. (하지만 잘못 알고 싶습니다.) –
몇 년 전 모노의'.mdb' 파일 형식을 만들었을 때, PDB는 문서화되지 않았고 독점적 이었기 때문에 단지 그것을 사용할 수 없었습니다. 그리고 AFAIK, 이것은 오늘날에도 여전히 사실입니다 (적어도 Wikipedia는 그렇게 말합니다). 이 파일을 작성하는 데는 몇 가지 도구가있을 수 있지만 Microsoft에서 작성했거나 파일 형식을 게시하지 않는 한 완전히 "올바른"PDB를 생성 할 수 없습니다. 그러나, 나는 또한 이것에 대해 잘못 입증되고 싶습니다. –
참고로 반대의 경우'pdb2mdb some.dll'을 사용하여 pdb를 모노 형식으로 변환하십시오. – KCD