diff --git a/pldmd/pldmd.cpp b/pldmd/pldmd.cpp
index d48844f..d64751d 100644
--- a/pldmd/pldmd.cpp
+++ b/pldmd/pldmd.cpp
@@ -3,6 +3,7 @@
 #include "libpldm/pdr.h"
 #include "libpldm/platform.h"
 
+#include "common/flight_recorder.hpp"
 #include "common/utils.hpp"
 #include "dbus_impl_requester.hpp"
 #include "fw-update/manager.hpp"
@@ -22,6 +23,8 @@
 
 #include <sdeventplus/event.hpp>
 #include <sdeventplus/source/io.hpp>
+#include <sdeventplus/source/signal.hpp>
+#include <stdplus/signal.hpp>
 
 #include <cstdio>
 #include <cstring>
@@ -62,6 +65,17 @@
 using namespace sdeventplus::source;
 using namespace pldm::responder;
 using namespace pldm::utils;
+using sdeventplus::source::Signal;
+using namespace pldm::flightrecorder;
+
+void interruptFlightRecorderCallBack(Signal& /*signal*/,
+                                     const struct signalfd_siginfo*)
+{
+    std::cerr << "\nReceived SIGUR1(10) Signal interrupt\n";
+
+    // obtain the flight recorder instance and dump the recorder
+    FlightRecorder::GetInstance().playRecorder();
+}
 
 static std::optional<Response>
     processRxMsg(const std::vector<uint8_t>& requestMsg, Invoker& invoker,
@@ -350,6 +364,7 @@
                 fd, static_cast<void*>(requestMsg.data()), peekedLength, 0);
             if (recvDataLength == peekedLength)
             {
+                FlightRecorder::GetInstance().saveRecord(requestMsg, false);
                 if (verbose)
                 {
                     printBuffer(Rx, requestMsg);
@@ -366,6 +381,8 @@
                                                  reqHandler, fwManager.get());
                     if (response.has_value())
                     {
+                        FlightRecorder::GetInstance().saveRecord(*response,
+                                                                 true);
                         if (verbose)
                         {
                             printBuffer(Tx, *response);
@@ -429,6 +446,9 @@
         hostPDRHandler->setHostFirmwareCondition();
     }
 #endif
+    stdplus::signal::block(SIGUSR1);
+    sdeventplus::source::Signal sigUsr1(
+        event, SIGUSR1, std::bind_front(&interruptFlightRecorderCallBack));
     returnCode = event.loop();
 
     if (shutdown(sockfd, SHUT_RDWR))
