Index: core/src/main/scala/kafka/tools/DumpLogSegments.scala
===================================================================
--- core/src/main/scala/kafka/tools/DumpLogSegments.scala	(revision 1402327)
+++ core/src/main/scala/kafka/tools/DumpLogSegments.scala	(working copy)
@@ -43,9 +43,19 @@
   /* print out the contents of the index */
   def dumpIndex(file: File) {
     val startOffset = file.getName().split("\\.")(0).toLong
+    val logFileName = file.getAbsolutePath.split("\\.")(0) + Log.LogFileSuffix
+    val logFile = new File(logFileName)
+    val messageSet = new FileMessageSet(logFile)
     val index = new OffsetIndex(file = file, baseOffset = startOffset)
     for(i <- 0 until index.entries) {
       val entry = index.entry(i)
+      val partialFileMessageSet: FileMessageSet = messageSet.read(entry.position, messageSet.sizeInBytes())
+      val messageAndOffset = partialFileMessageSet.head
+      if(messageAndOffset.offset != entry.offset + index.baseOffset) {
+        System.err.println(("The offset in index file [%s] does not match the offset stored in " +
+                "log file [%s], they're %d and %d separately").format(entry.offset + index.baseOffset, messageAndOffset.offset))
+        exit(1)
+      }
       // since it is a sparse file, in the event of a crash there may be many zero entries, stop if we see one
       if(entry.offset == 0 && i > 0)
         return
@@ -59,8 +69,17 @@
     println("Starting offset: " + startOffset)
     val messageSet = new FileMessageSet(file)
     var validBytes = 0L
+    var lastOffset = -1l
     for(messageAndOffset <- messageSet) {
       val msg = messageAndOffset.message
+
+      if(lastOffset == -1)
+        lastOffset = messageAndOffset.offset
+      else if (messageAndOffset.offset != lastOffset +1) {
+        System.err.println("The offset in the data log file [%s] is not consecutive, [%l] follows [%l]".format(file.getName, messageAndOffset.offset, lastOffset))
+        exit(1)
+      } else lastOffset = messageAndOffset.offset
+
       print("offset: " + messageAndOffset.offset + " position: " + validBytes + " isvalid: " + msg.isValid +
             " payloadsize: " + msg.payloadSize + " magic: " + msg.magic +
             " compresscodec: " + msg.compressionCodec + " crc: " + msg.checksum)
