如何使用 Visual Studio 2015 在 Raspberry Pi 3 上远程调试 C# .NET 4.5 WinForms 应用程序?
How can I remotely debug a C# .NET 4.5 WinForms application on a Raspberry Pi 3 using Visual Studio 2015?
我正在尝试使用 Visual Studio 2015 在 Raspberry Pi 3(运行ning Raspbian Jessie)上远程调试 C# .NET 4.5 WinForms 应用程序=38=]机.
据我了解,我可以为此使用 MonoRemoteDebugger。我已经在 Pi 上安装了 Visual Studio 扩展和 运行 服务器程序,但是当我尝试调试应用程序时 MonoRemoteDebugger.Server.exe 程序显示来自 pdb2mdb.exe 的错误程序。这是错误:
Fatal error: Microsoft.Cci.Pdb.PdbDebugException: Unknown custom
metadata item kind: 6 at
Microsoft.Cci.Pdb.PdbFunction.ReadCustomMetadata
(Microsoft.Cci.Pdb.BitAccess bits) [0x00000] in :0
at Microsoft.Cci.Pdb.PdbFunction..ctor (System.String module,
ManProcSym proc, Microsoft.Cci.Pdb.BitAccess bits) [0x00000] in
:0 at
Microsoft.Cci.Pdb.PdbFunction.LoadManagedFunctions (System.String
module, Microsoft.Cci.Pdb.BitAccess bits, UInt32 limit, Boolean
readStrings) [0x00000] in :0 at
Microsoft.Cci.Pdb.PdbFile.LoadFuncsFromDbiModule
(Microsoft.Cci.Pdb.BitAccess bits, Microsoft.Cci.Pdb.DbiModuleInfo
info, Microsoft.Cci.Pdb.IntHashTable names,
System.Collections.ArrayList funcList, Boolean readStrings,
Microsoft.Cci.Pdb.MsfDirectory dir,
System.Collections.Generic.Dictionary`2 nameIndex,
Microsoft.Cci.Pdb.PdbReader reader) [0x00000] in :0
at Microsoft.Cci.Pdb.PdbFile.LoadFunctions (System.IO.Stream read,
Microsoft.Cci.Pdb.BitAccess bits, Boolean readAllStrings) [0x00000] in
:0 at Microsoft.Cci.Pdb.PdbFile.LoadFunctions
(System.IO.Stream read, Boolean readAllStrings) [0x00000] in :0 at Pdb2Mdb.Driver.Convert (Mono.Cecil.AssemblyDefinition
assembly, System.IO.Stream pdb,
Mono.CompilerServices.SymbolWriter.MonoSymbolWriter mdb) [0x00000] in
:0
我已经在 Pi 上尝试 运行ning 命令 "pdb2mdb MyProgram.exe",但它产生了同样的错误,所以看来问题出在 pdb2mdb.exe 程序上。通过一些挖掘,我发现这似乎是 Mono.Cecil 中的一个错误,其中 was fixed 在版本 0.9.6 中,但似乎可用于 Raspian Jessie 的最新版本是 0.9.5.
我尝试将 pdb2mdb.exe 替换为 the one from here,然后错误变为:
Unhandled Exception: System.TypeLoadException: Could not load type
'Mono.Cecil.AssemblyDefinition' from assembly 'pdb2mdb,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. [ERROR] FATAL
UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type
'Mono.Cecil.AssemblyDefinition' from assembly 'pdb2mdb,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
尝试在 Pi 上获得更新的 Mono.Cecil 版本是解决方案吗?如果是这样,我将如何处理,以及确保 pdb2mdb.exe 引用较新的版本?
我已经解决了问题!
第一期是 pdb2mdb.exe。来自 mono-project.com 的 wheezy 包源必须用于使用这些命令获取最新的单声道包:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
sudo apt-get install mono-complete mono-devel
之后,Visual Studio 中的 MonoRemoteDebugger 显示以下错误:
Unable to start program 'C:\Test1\Test1.exe'.
The located assembly's manifest definition does not match the assembly
reference.
为了解决这个问题,我删除了 MonoRemoteDebugger 1.0.5 Visual Studio 扩展并安装了没有这个问题的 version 1.0.4。
我正在尝试使用 Visual Studio 2015 在 Raspberry Pi 3(运行ning Raspbian Jessie)上远程调试 C# .NET 4.5 WinForms 应用程序=38=]机.
据我了解,我可以为此使用 MonoRemoteDebugger。我已经在 Pi 上安装了 Visual Studio 扩展和 运行 服务器程序,但是当我尝试调试应用程序时 MonoRemoteDebugger.Server.exe 程序显示来自 pdb2mdb.exe 的错误程序。这是错误:
Fatal error: Microsoft.Cci.Pdb.PdbDebugException: Unknown custom metadata item kind: 6 at Microsoft.Cci.Pdb.PdbFunction.ReadCustomMetadata (Microsoft.Cci.Pdb.BitAccess bits) [0x00000] in :0
at Microsoft.Cci.Pdb.PdbFunction..ctor (System.String module, ManProcSym proc, Microsoft.Cci.Pdb.BitAccess bits) [0x00000] in :0 at Microsoft.Cci.Pdb.PdbFunction.LoadManagedFunctions (System.String module, Microsoft.Cci.Pdb.BitAccess bits, UInt32 limit, Boolean readStrings) [0x00000] in :0 at Microsoft.Cci.Pdb.PdbFile.LoadFuncsFromDbiModule (Microsoft.Cci.Pdb.BitAccess bits, Microsoft.Cci.Pdb.DbiModuleInfo info, Microsoft.Cci.Pdb.IntHashTable names, System.Collections.ArrayList funcList, Boolean readStrings, Microsoft.Cci.Pdb.MsfDirectory dir, System.Collections.Generic.Dictionary`2 nameIndex, Microsoft.Cci.Pdb.PdbReader reader) [0x00000] in :0 at Microsoft.Cci.Pdb.PdbFile.LoadFunctions (System.IO.Stream read, Microsoft.Cci.Pdb.BitAccess bits, Boolean readAllStrings) [0x00000] in :0 at Microsoft.Cci.Pdb.PdbFile.LoadFunctions (System.IO.Stream read, Boolean readAllStrings) [0x00000] in :0 at Pdb2Mdb.Driver.Convert (Mono.Cecil.AssemblyDefinition assembly, System.IO.Stream pdb, Mono.CompilerServices.SymbolWriter.MonoSymbolWriter mdb) [0x00000] in :0
我已经在 Pi 上尝试 运行ning 命令 "pdb2mdb MyProgram.exe",但它产生了同样的错误,所以看来问题出在 pdb2mdb.exe 程序上。通过一些挖掘,我发现这似乎是 Mono.Cecil 中的一个错误,其中 was fixed 在版本 0.9.6 中,但似乎可用于 Raspian Jessie 的最新版本是 0.9.5.
我尝试将 pdb2mdb.exe 替换为 the one from here,然后错误变为:
Unhandled Exception: System.TypeLoadException: Could not load type 'Mono.Cecil.AssemblyDefinition' from assembly 'pdb2mdb, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type 'Mono.Cecil.AssemblyDefinition' from assembly 'pdb2mdb, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
尝试在 Pi 上获得更新的 Mono.Cecil 版本是解决方案吗?如果是这样,我将如何处理,以及确保 pdb2mdb.exe 引用较新的版本?
我已经解决了问题!
第一期是 pdb2mdb.exe。来自 mono-project.com 的 wheezy 包源必须用于使用这些命令获取最新的单声道包:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
sudo apt-get install mono-complete mono-devel
之后,Visual Studio 中的 MonoRemoteDebugger 显示以下错误:
Unable to start program 'C:\Test1\Test1.exe'.
The located assembly's manifest definition does not match the assembly reference.
为了解决这个问题,我删除了 MonoRemoteDebugger 1.0.5 Visual Studio 扩展并安装了没有这个问题的 version 1.0.4。