[net]如何将调试代码注入程序集?

Anz*_*rio 2 .net debugging code-injection

给定一个具有入口点的程序集,如:

int FooClass::doFoo(int x, double y)
{
   int ret;
   // Do some foo
   return ret;
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用另一个程序集来模拟以下内容:

int FooClass::doFoo(int x, double y)
{
   int ret;
   TRACE_PARAM_INT(x)
   TRACE_PARAM_DOUBLE(y)
   // Do some foo
   TRACE_RETURN_INT(ret)
   return ret;
}
Run Code Online (Sandbox Code Playgroud)

并且仅在存在DEBUG时启用此代码注入.如果有这样的方法,你如何加载"调试"程序集?

编辑1:#ifdef不是一个选项.说,我不想修改代码库.

编辑2:我的主要问题是"如何将代码注入已编译的程序集".我确实有基本代码,但我宁愿不在主代码中添加用于跟踪的K行,而是使用另一个程序集来执行此操作.我知道如何使用VS来调试,我想要的是添加变量的跟踪机制(除其他外).

Jar*_*314 10

您可以尝试像PostSharp这样的AOP后编译器.它适用于所有.net语言,但我没有尝试过使用C++.