最近做了个小软件,但是有一些小问题,每次都要去用VS debug来查看变量的值来确定程序的问题所在,有时候程序放到一个没有开发环境的机器上去运行,找问题就更难了。
所以我想做个小工具,在我的程序运行后,这个工具能实时地检测我的程序里的变量值,
.NET里有没有这样的函数,能不能实现呢?

解决方案 »

  1.   

    比较困难,如果你会一些高级调试技术,到可以用windbg,ida pro, PEBrowse一类的东西如果你不会这些东西,基本上没啥办法。实际你的要求让我想起了最古老的游戏修改器fpe,但是net下比较麻烦除了实时监控内存的代码和寄存器的值以外没啥好办法,毕竟大多数东西都是托管代码,其内存地址都是浮动滴,没办法像fpe那样只监控固定地址就成
      

  2.   

    当然可以 以下是反射一条记录的信息写成xml /// <summary>
            /// class item convert to xml item 解析属性ID作为节点并且为节点赋值
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="info"></param>
            /// <param name="root"></param>
            /// <param name="_xmlDoc"></param>
            internal static void CItemToXml<T>(T info, XmlElement root, XmlDocument _xmlDoc)
            {
                try
                {
                    System.Reflection.PropertyInfo[] propertys = info.GetType().GetProperties();
                    foreach (System.Reflection.PropertyInfo property in propertys)
                    {
                        var name = IsNotProperty.Where(p=>p.Equals(property.Name));
                        if (name.Count() == 1)
                            continue;                    XmlElement obj = _xmlDoc.CreateElement(property.Name);                    
                        if(property.GetValue(info, null) != null )
                            obj.InnerText = property.GetValue(info, null).ToString();
                        root.AppendChild(obj);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
      

  3.   

    有个软件, 挺好, ROE 
    http://www.codeproject.com/KB/cs/RuntimeObjectEditor.aspx