diff --git a/src/logging.cc b/src/logging.cc
index f962e41..4aacd3b 100644
--- a/src/logging.cc
+++ b/src/logging.cc
@@ -74,6 +74,11 @@
     return;
   }
 
+  if (address_ == NULL) {
+    os << "00000000:";
+    return;
+  }
+
   static const char gHexDigit[] = "0123456789abcdef";
   const unsigned char* addr = reinterpret_cast<const unsigned char*>(address_);
   char out[76];           /* exact fit */
diff --git a/src/object_utils.h b/src/object_utils.h
index 249fffb..cb963cc 100644
--- a/src/object_utils.h
+++ b/src/object_utils.h
@@ -71,7 +71,7 @@
   }
 
   void ChangeClass(const Class* new_c) {
-    CHECK(new_c != NULL);
+    CHECK(new_c != NULL) << "klass_=" << HexDump(klass_, sizeof(Class), true);
     if (dex_cache_ != NULL) {
       DexCache* new_c_dex_cache = new_c->GetDexCache();
       if (new_c_dex_cache != dex_cache_) {
@@ -87,6 +87,7 @@
   // The returned const char* is only guaranteed to be valid for the lifetime of the ClassHelper.
   // If you need it longer, copy it into a std::string.
   const char* GetDescriptor() {
+    CHECK(klass_ != NULL);
     if (UNLIKELY(klass_->IsArrayClass())) {
       return GetArrayDescriptor();
     } else if (UNLIKELY(klass_->IsPrimitive())) {
@@ -104,6 +105,7 @@
   const char* GetArrayDescriptor() {
     std::string result("[");
     const Class* saved_klass = klass_;
+    CHECK(saved_klass != NULL);
     ChangeClass(klass_->GetComponentType());
     result += GetDescriptor();
     ChangeClass(saved_klass);
@@ -121,6 +123,7 @@
   }
 
   uint32_t NumInterfaces() {
+    DCHECK(klass_ != NULL);
     if (klass_->IsPrimitive()) {
       return 0;
     } else if (klass_->IsArrayClass()) {
@@ -138,12 +141,14 @@
   }
 
   uint16_t GetInterfaceTypeIdx(uint32_t idx) {
+    DCHECK(klass_ != NULL);
     DCHECK(!klass_->IsPrimitive());
     DCHECK(!klass_->IsArrayClass());
     return GetInterfaceTypeList()->GetTypeItem(idx).type_idx_;
   }
 
   Class* GetInterface(uint32_t idx) {
+    DCHECK(klass_ != NULL);
     DCHECK(!klass_->IsPrimitive());
     if (klass_->IsArrayClass()) {
       if (idx == 0) {
@@ -203,6 +208,7 @@
   DexCache* GetDexCache() {
     DexCache* result = dex_cache_;
     if (result == NULL) {
+      DCHECK(klass_ != NULL);
       result = klass_->GetDexCache();
       dex_cache_ = result;
     }
