我最近看到了博客文章Monovation: Miguel de Icaza 的实时过程中的装配注入。
我试图在没有运气的情况下重现它。我的命令行是
'csharp --attach 5612'
其中 5612 是一个简单的运行单声道“Hello World”控制台应用程序的 pid。我有一个例外(请参阅上面的堆栈跟踪)。
到目前为止我已经尝试过:
- 使用 Mono 2.10.8(.NET 4 和 2 的 csharp 和 csharp2 命令)
- 使用 Mono 3.2.3(仅存在 csharp 命令)
Q1:错过了什么?
Q2:这个虚拟机附加工具(参见Monovation:Assembly Injection into Live Processes)是否可能仅在 Linux 安装中可用?(我使用的是 Windows 7)这听起来很简单,但 Miguel 在他的文章中没有提到平台限制,而且 mono 的重点是多平台,不是吗?所以我简直不敢相信它这么容易。
Q3:Mac 呢?它有没有可能在 Mac 上运行,或者我们必须寻找其他地方?
提前谢谢
堆栈跟踪:
Unhandled Exception:
System.TypeInitializationException: An exception was thrown by the type initializer for Mono.Unix.Native.Syscall ---> System.EntryPointNotFoundException: Mono_Posix_Syscall_get_at_fdcwd
at (wrapper managed-to-native) Mono.Unix.Native.Syscall:get_at_fdcwd ()
at Mono.Unix.Native.Syscall..cctor () [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at Mono.Unix.UnixUserInfo.GetRealUserId () [0x00000] in <filename unknown>:0
at Mono.Unix.UnixUserInfo.GetRealUser () [0x00000] in <filename unknown>:0
at Mono.Attach.VirtualMachine.Attach (System.String agent, System.String args) [0x00000] in <filename unknown>:0
at Mono.ClientCSharpShell..ctor (Mono.CSharp.Evaluator evaluator, Int32 pid) [0x00000] in <filename unknown>:0
at Mono.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: An exception was thrown by the type initializer for Mono.Unix.Native.Syscall ---> System.EntryPointNotFoundException: Mono_Posix_Syscall_get_at_fdcwd
at (wrapper managed-to-native) Mono.Unix.Native.Syscall:get_at_fdcwd ()
at Mono.Unix.Native.Syscall..cctor () [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at Mono.Unix.UnixUserInfo.GetRealUserId () [0x00000] in <filename unknown>:0
at Mono.Unix.UnixUserInfo.GetRealUser () [0x00000] in <filename unknown>:0
at Mono.Attach.VirtualMachine.Attach (System.String agent, System.String args) [0x00000] in <filename unknown>:0
at Mono.ClientCSharpShell..ctor (Mono.CSharp.Evaluator evaluator, Int32 pid) [0x00000] in <filename unknown>:0
at Mono.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0