diff --git a/quic/qbone/qbone_client_session.cc b/quic/qbone/qbone_client_session.cc
index f3b6290..72d849b 100644
--- a/quic/qbone/qbone_client_session.cc
+++ b/quic/qbone/qbone_client_session.cc
@@ -72,7 +72,8 @@
 
 bool QboneClientSession::SendServerRequest(const QboneServerRequest& request) {
   if (!control_stream_) {
-    QUIC_BUG << "Cannot send server request before control stream is created.";
+    QUIC_BUG_V2(quic_bug_11056_1)
+        << "Cannot send server request before control stream is created.";
     return false;
   }
   return control_stream_->SendRequest(request);
diff --git a/quic/qbone/qbone_control_stream.cc b/quic/qbone/qbone_control_stream.cc
index 132ecb7..e0d98ff 100644
--- a/quic/qbone/qbone_control_stream.cc
+++ b/quic/qbone/qbone_control_stream.cc
@@ -48,12 +48,13 @@
 bool QboneControlStreamBase::SendMessage(const proto2::Message& proto) {
   std::string tmp;
   if (!proto.SerializeToString(&tmp)) {
-    QUIC_BUG << "Failed to serialize QboneControlRequest";
+    QUIC_BUG_V2(quic_bug_11023_1) << "Failed to serialize QboneControlRequest";
     return false;
   }
   if (tmp.size() > kuint16max) {
-    QUIC_BUG << "QboneControlRequest too large: " << tmp.size() << " > "
-             << kuint16max;
+    QUIC_BUG_V2(quic_bug_11023_2)
+        << "QboneControlRequest too large: " << tmp.size() << " > "
+        << kuint16max;
     return false;
   }
   uint16_t size = tmp.size();
diff --git a/quic/qbone/qbone_packet_processor.cc b/quic/qbone/qbone_packet_processor.cc
index c993557..a24ae5f 100644
--- a/quic/qbone/qbone_packet_processor.cc
+++ b/quic/qbone/qbone_packet_processor.cc
@@ -62,7 +62,8 @@
 void QbonePacketProcessor::ProcessPacket(std::string* packet,
                                          Direction direction) {
   if (QUIC_PREDICT_FALSE(!IsValid())) {
-    QUIC_BUG << "QuicPacketProcessor is invoked in an invalid state.";
+    QUIC_BUG_V2(quic_bug_11024_1)
+        << "QuicPacketProcessor is invoked in an invalid state.";
     stats_->OnPacketDroppedSilently(direction);
     return;
   }
@@ -120,8 +121,9 @@
     // Sanity-check the bounds.
     if (packet_data >= *transport_data || header_size > packet->size() ||
         header_size < kIPv6HeaderSize) {
-      QUIC_BUG << "Invalid pointers encountered in "
-                  "QbonePacketProcessor::ProcessPacket.  Dropping the packet";
+      QUIC_BUG_V2(quic_bug_11024_2)
+          << "Invalid pointers encountered in "
+             "QbonePacketProcessor::ProcessPacket.  Dropping the packet";
       return ProcessingResult::SILENT_DROP;
     }
 
diff --git a/quic/qbone/qbone_server_session.cc b/quic/qbone/qbone_server_session.cc
index 76a460c..64773f4 100644
--- a/quic/qbone/qbone_server_session.cc
+++ b/quic/qbone/qbone_server_session.cc
@@ -66,7 +66,8 @@
 
 bool QboneServerSession::SendClientRequest(const QboneClientRequest& request) {
   if (!control_stream_) {
-    QUIC_BUG << "Cannot send client request before control stream is created.";
+    QUIC_BUG_V2(quic_bug_11026_1)
+        << "Cannot send client request before control stream is created.";
     return false;
   }
   return control_stream_->SendRequest(request);
diff --git a/quic/qbone/qbone_session_base.cc b/quic/qbone/qbone_session_base.cc
index 607c542..968a51a 100644
--- a/quic/qbone/qbone_session_base.cc
+++ b/quic/qbone/qbone_session_base.cc
@@ -133,7 +133,8 @@
 
 void QboneSessionBase::SendPacketToPeer(absl::string_view packet) {
   if (crypto_stream_ == nullptr) {
-    QUIC_BUG << "Attempting to send packet before encryption established";
+    QUIC_BUG_V2(quic_bug_10987_1)
+        << "Attempting to send packet before encryption established";
     return;
   }
 
@@ -147,7 +148,8 @@
         break;
       case MESSAGE_STATUS_TOO_LARGE: {
         if (packet.size() < sizeof(ip6_hdr)) {
-          QUIC_BUG << "Dropped malformed packet: IPv6 header too short";
+          QUIC_BUG_V2(quic_bug_10987_2)
+              << "Dropped malformed packet: IPv6 header too short";
           break;
         }
         auto* header = reinterpret_cast<const ip6_hdr*>(packet.begin());
@@ -164,16 +166,17 @@
         break;
       }
       case MESSAGE_STATUS_ENCRYPTION_NOT_ESTABLISHED:
-        QUIC_BUG << "MESSAGE_STATUS_ENCRYPTION_NOT_ESTABLISHED";
+        QUIC_BUG_V2(quic_bug_10987_3)
+            << "MESSAGE_STATUS_ENCRYPTION_NOT_ESTABLISHED";
         break;
       case MESSAGE_STATUS_UNSUPPORTED:
-        QUIC_BUG << "MESSAGE_STATUS_UNSUPPORTED";
+        QUIC_BUG_V2(quic_bug_10987_4) << "MESSAGE_STATUS_UNSUPPORTED";
         break;
       case MESSAGE_STATUS_BLOCKED:
-        QUIC_BUG << "MESSAGE_STATUS_BLOCKED";
+        QUIC_BUG_V2(quic_bug_10987_5) << "MESSAGE_STATUS_BLOCKED";
         break;
       case MESSAGE_STATUS_INTERNAL_ERROR:
-        QUIC_BUG << "MESSAGE_STATUS_INTERNAL_ERROR";
+        QUIC_BUG_V2(quic_bug_10987_6) << "MESSAGE_STATUS_INTERNAL_ERROR";
         break;
     }
     return;
@@ -182,7 +185,8 @@
   // QBONE streams are ephemeral.
   QuicStream* stream = CreateOutgoingStream();
   if (!stream) {
-    QUIC_BUG << "Failed to create an outgoing QBONE stream.";
+    QUIC_BUG_V2(quic_bug_10987_7)
+        << "Failed to create an outgoing QBONE stream.";
     return;
   }
 
