http://www.codeproject.com/KB/trace/mytracer.aspx
A simple solution to see the inside of your code
KEYWORD: ipc,
大概意思是,在目标程序使用trace输出,然后在自己的程序使用IPC技术,获取输出。之后又查了一下什么是trace,其实和console差不多,不过他默认输出到console,也可以配置输出到文本。
放在程序代码中间,会对代码性能有点影响。
http://www.codeproject.com/KB/trace/debugwriter.aspx
DebugWriter - A simple property value dumper
无聊。。。浪费我5分钟去度。就是用反射获取对象的值,然后打印出来,这样就不需要一个个去写。
Debug.WriteLine(finalResult);
http://www.codeproject.com/KB/trace/minememoryreader.aspx
Minesweeper, Behind the scenes
算是有点难度的文章,就是读取另外一个进程的内存数据。 整篇文章废话了40%,之后才出现关键词:the answer resides in an API called ReadProcessMemory
在kernel32.dll里面,提供了读取内存数据的方法,不过需要指定内存的偏移量。
kernel32.dll是Windows 9x/Me中非常重要的32位动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
System.Diagnostics.Process.GetProcessesByName("winmine"); 读取指定的进程。
这边文章之后,找到了一篇更加恐怖的
http://www.codeproject.com/KB/cs/sojaner_memory_scanner.aspx
How to write a Memory Scanner using C#
大概介绍了一种内存扫描的方法,就是逐个去扫描,直到得到需要的数字、结果。
http://www.codeproject.com/KB/trace/releasemodebreakpoint.aspx
A Release Mode Breakpoint Using Reflection Emit
这个不解释了,就是用emit制造一个breakpoint
http://www.codeproject.com/KB/trace/tracking_of_bugs.aspx
Bug Fix Tracking in C# Executable Files
这篇文章提到了一个有趣的名词: Defect Tracking System。 google了一下,找到了一张图:
http://www.codeproject.com/KB/trace/XTraceCS.aspx
XTrace.cs - C# trace with printf formatting
一篇很简单的文章,但是给出了个不错的体验,当使用debug.write的时候,输出点击会自动导航到对应的位置。