diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc
index d9b481c..951fb81 100644
--- a/quic/core/quic_packet_creator.cc
+++ b/quic/core/quic_packet_creator.cc
@@ -448,6 +448,9 @@
 
   const bool set_fin = fin && (bytes_consumed == remaining_data_size);
   QuicStreamFrame frame(id, set_fin, stream_offset, bytes_consumed);
+  if (debug_delegate_ != nullptr) {
+    debug_delegate_->OnFrameAddedToPacket(QuicFrame(frame));
+  }
   QUIC_DVLOG(1) << ENDPOINT << "Adding frame: " << frame;
 
   // TODO(ianswett): AppendTypeByte and AppendStreamFrame could be optimized
diff --git a/quic/core/quic_packet_creator_test.cc b/quic/core/quic_packet_creator_test.cc
index 0826b08..66b92b9 100644
--- a/quic/core/quic_packet_creator_test.cc
+++ b/quic/core/quic_packet_creator_test.cc
@@ -65,6 +65,13 @@
   return params;
 }
 
+class MockDebugDelegate : public QuicPacketCreator::DebugDelegate {
+ public:
+  ~MockDebugDelegate() override = default;
+
+  MOCK_METHOD1(OnFrameAddedToPacket, void(const QuicFrame& frame));
+};
+
 class TestPacketCreator : public QuicPacketCreator {
  public:
   TestPacketCreator(QuicConnectionId connection_id,
@@ -1237,9 +1244,12 @@
                     QuicPacketCreatorPeer::GetRetryTokenLengthLength(&creator_),
                     0, QuicPacketCreatorPeer::GetLengthLength(&creator_)),
             creator_.BytesFree());
+  StrictMock<MockDebugDelegate> debug;
+  creator_.set_debug_delegate(&debug);
 
   // Add a variety of frame types and then a padding frame.
   QuicAckFrame ack_frame(InitAckFrame(10u));
+  EXPECT_CALL(debug, OnFrameAddedToPacket(_));
   EXPECT_TRUE(
       creator_.AddSavedFrame(QuicFrame(&ack_frame), NOT_RETRANSMISSION));
   EXPECT_TRUE(creator_.HasPendingFrames());
@@ -1248,6 +1258,7 @@
 
   QuicFrame frame;
   MakeIOVector("test", &iov_);
+  EXPECT_CALL(debug, OnFrameAddedToPacket(_));
   ASSERT_TRUE(creator_.ConsumeData(
       QuicUtils::GetCryptoStreamId(client_framer_.transport_version()), &iov_,
       1u, iov_.iov_len, 0u, 0u, false, false, NOT_RETRANSMISSION, &frame));
@@ -1258,6 +1269,7 @@
       QuicUtils::GetCryptoStreamId(client_framer_.transport_version())));
 
   QuicPaddingFrame padding_frame;
+  EXPECT_CALL(debug, OnFrameAddedToPacket(_));
   EXPECT_TRUE(
       creator_.AddSavedFrame(QuicFrame(padding_frame), NOT_RETRANSMISSION));
   EXPECT_TRUE(creator_.HasPendingFrames());
@@ -1308,6 +1320,9 @@
   EXPECT_CALL(delegate_, OnSerializedPacket(_))
       .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
   size_t num_bytes_consumed;
+  StrictMock<MockDebugDelegate> debug;
+  creator_.set_debug_delegate(&debug);
+  EXPECT_CALL(debug, OnFrameAddedToPacket(_));
   creator_.CreateAndSerializeStreamFrame(
       QuicUtils::GetHeadersStreamId(client_framer_.transport_version()),
       iov_.iov_len, 0, 0, true, NOT_RETRANSMISSION, &num_bytes_consumed);
