Пример #1
0
            public static void PyCode_New(DkmThread thread, ulong frameBase, ulong vframe, ulong returnAddress)
            {
                var process = thread.Process;
                CppExpressionEvaluator cppEval = new CppExpressionEvaluator(thread, frameBase, vframe);

                var filenamePtr = cppEval.EvaluateUInt64("filename");
                IPyBaseStringObject filenameObj = PyObject.FromAddress(process, filenamePtr) as IPyBaseStringObject;

                if (filenameObj == null)
                {
                    return;
                }

                string filename = filenameObj.ToString();

                if (process.GetPythonRuntimeInstance().GetModuleInstances().Any(mi => mi.FullName == filename))
                {
                    return;
                }

                new RemoteComponent.CreateModuleRequest
                {
                    ModuleId = Guid.NewGuid(),
                    FileName = filename
                }.SendLower(process);
            }
Пример #2
0
 private IEnumerable <PythonEvaluationResult> GetDebugChildrenFromDict(PyDictObject dict)
 {
     foreach (var pair in dict.ReadElements())
     {
         IPyBaseStringObject name = pair.Key as IPyBaseStringObject;
         if (name != null && !pair.Value.IsNull)
         {
             yield return(new PythonEvaluationResult(pair.Value, name.ToString()));
         }
     }
 }
Пример #3
0
 public static string ToStringOrNull(this IPyBaseStringObject s)
 {
     return(s == null ? null : s.ToString());
 }