struct stdstring { char *ptr; uint64_t len; uint64_t pad1; uint64_t pad2; } struct goal { uint8_t pad[0x60]; struct stdstring name; } uprobe:/nix/store/1jgajchkwg8jkw0avznjrl1wbswq80nr-lix-2.93.0-devpre20250325-fc58e7b/lib/liblixstore.so:cpp:"nix::LocalDerivationGoal::runChild()" { @buildstart[pid] = 1; $goal = (struct goal*)arg0; printf("%llu start pid=%d addr=%p drv=%r\n", nsecs(monotonic), pid, arg0, buf($goal->name.ptr, $goal->name.len)); } uprobe:/nix/store/1jgajchkwg8jkw0avznjrl1wbswq80nr-lix-2.93.0-devpre20250325-fc58e7b/lib/liblixstore.so:cpp:"nix::DerivationGoal::buildDone()" { printf("%llu buildDone addr=%p\n", nsecs(monotonic), arg1); } uprobe:/nix/store/1jgajchkwg8jkw0avznjrl1wbswq80nr-lix-2.93.0-devpre20250325-fc58e7b/lib/liblixstore.so:_ZN3nix14DerivationGoal4doneENS_11BuildResult6StatusESt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_11RealisationESt4lessIS9_ESaISt4pairIKS9_SA_EEESt8optionalINS_5ErrorEE { $goal = (struct goal*)arg1; printf("%llu done addr=%p\n", nsecs(monotonic), arg1); } tracepoint:sched:sched_prepare_exec { if (has_key(@buildstart, args->pid)) { printf("%llu exec pid=%d \n", nsecs(monotonic), args->pid); } } tracepoint:sched:sched_process_exit { if (has_key(@buildstart, args->pid)) { printf("%llu exit pid=%d\n", nsecs(monotonic), args->pid); delete(@buildstart, args->pid); } }