コード例 #1
0
 internal void SetBreakPoint(CorModule module, string className, string methodName, INotification _lisenter)
 {
     BreakPointInfo breakpoint = new BreakPointInfo(module.Name, className, methodName, null, _lisenter);
     if (!breakStringVsBP.ContainsKey(breakpoint.Identifier)){
         int token = 0;
         CorFunction fun = null;
         try{
             module.Importer.FindTypeDefByName(className, 0, out token);
         } catch (Exception){
             throw new BreakPointException(className + " class is not found in" + module.Name);
         }
         MetaType type = new MetaType(module.Importer, token);
         try{
             List<BreakPointInfo> bps = new List<BreakPointInfo>();
             foreach (MetadataMethodInfo methodInfo in type.GetMethods(methodName)){
                 BreakPointInfo bp = new BreakPointInfo(module.Name, className, methodName, null, _lisenter);
                 fun = module.GetCorFuntion((uint)methodInfo.MetadataToken);
                 bp.bpoint = fun.CreateBreakPoint();
                 bp.bpoint.Activate();
                 bps.Add(bp);
             }
             if(bps.Count > 0){
                 breakStringVsBP.Add(bps[0].Identifier, bps);
             }
         } catch (Exception) {
             throw new BreakPointException(methodName + " Method is not found in" + className);
         }
     }
 }
コード例 #2
0
        public static CorFunction GetFuntion(CorModule module, string className, string funtionName)
        {
            CorFunction fun = null;
            int token = 0;
            try
            {
                module.Importer.FindTypeDefByName(className, 0, out token);
            }
            catch (Exception)
            {
                throw new BreakPointException(className + " class is not found in" + module.Name);
            }
            MetaType type = new MetaType(module.Importer, token);
            try
            {
                MetadataMethodInfo method = type.GetMethod(funtionName);
                fun = module.GetCorFuntion((uint)method.MetadataToken);
            }
            catch (Exception)
            {
                throw new BreakPointException(funtionName + " Method is not found in" + className);
            }

            return fun;
            //method.MetadataToken
        }