diff --git a/core/sched.cc b/core/sched.cc
index 5159770e57bae5773fcb74e7cb11468aff5c677c..d1f092f53d06c4e1f667f115accda9bf2f7511d4 100644
--- a/core/sched.cc
+++ b/core/sched.cc
@@ -40,6 +40,7 @@ TRACEPOINT(trace_sched_preempt, "");
 TRACEPOINT(trace_timer_set, "timer=%p time=%d", timer_base*, s64);
 TRACEPOINT(trace_timer_cancel, "timer=%p", timer_base*);
 TRACEPOINT(trace_timer_fired, "timer=%p", timer_base*);
+TRACEPOINT(trace_thread_create, "thread=%p", thread*);
 
 std::vector<cpu*> cpus __attribute__((init_priority((int)init_prio::cpus)));
 
@@ -571,6 +572,7 @@ thread::thread(std::function<void ()> func, attr attr, bool main)
     , _cleanup([this] { delete this; })
     , _joiner(nullptr)
 {
+    trace_thread_create(this);
     setup_tcb();
     WITH_LOCK(thread_map_mutex) {
         if (!main) {