Explorar o código

Profiler: Add some helpful debug output if a process is missing

I've had a couple of instances where a profile was missing process
creation events for a PID. I don't know how to reproduce it yet,
so this patch merely adds a helpful debug message so you know why
Profiler is failing to load the file.
Andreas Kling %!s(int64=4) %!d(string=hai) anos
pai
achega
863ac3af97
Modificáronse 1 ficheiros con 7 adicións e 3 borrados
  1. 7 3
      Userland/DevTools/Profiler/Profile.cpp

+ 7 - 3
Userland/DevTools/Profiler/Profile.cpp

@@ -62,12 +62,16 @@ void Profile::rebuild_tree()
     Vector<NonnullRefPtr<ProfileNode>> roots;
     Vector<NonnullRefPtr<ProfileNode>> roots;
 
 
     auto find_or_create_process_node = [this, &roots](pid_t pid, u64 timestamp) -> ProfileNode& {
     auto find_or_create_process_node = [this, &roots](pid_t pid, u64 timestamp) -> ProfileNode& {
-        auto& process = *find_process(pid, timestamp);
+        auto* process = find_process(pid, timestamp);
+        if (!process) {
+            dbgln("Profile contains event for unknown process with pid={}, timestamp={}", pid, timestamp);
+            VERIFY_NOT_REACHED();
+        }
         for (auto root : roots) {
         for (auto root : roots) {
-            if (&root->process() == &process)
+            if (&root->process() == process)
                 return root;
                 return root;
         }
         }
-        auto new_root = ProfileNode::create_process_node(process);
+        auto new_root = ProfileNode::create_process_node(*process);
         roots.append(new_root);
         roots.append(new_root);
         return new_root;
         return new_root;
     };
     };