【问题标题】:android ndk debug trapandroid ndk 调试陷阱
【发布时间】:2012-09-28 11:36:35
【问题描述】:

在 NDK (Only-native-C++) 应用程序中,设置编程调试陷阱的正确方法是什么?我的意思是停止应用程序以检查调用堆栈、变量等。 例如,在我的 GameEngine 中的 WIN32 调试陷阱被声明为

#define DIE() __asm{ int 3 }

对于 iOS 来说是

#   if TARGET_IPHONE_SIMULATOR
#       define DIE() {__asm__("int3");}
#   else
#       define DIE() {__asm__("trap");}
#   endif

对于 Android NDK 应用程序,什么是正确的?

【问题讨论】:

    标签: android debugging android-ndk


    【解决方案1】:

    来自 "android/log.h" 的 __android_log_assert(...) 应该可以完成这项工作。

    这应该会让你进入调试器,因为它会引发 SIGTRAP。 有关使用摘要,请参阅 http://mobilepearls.com/labs/native-android-api/

    【讨论】:

      【解决方案2】:
      #include <signal.h>
      raise(SIGTRAP);
      

      或喜欢http://androidxref.com/5.0.0_r2/xref/system/core/liblog/logd_write.c函数:__android_log_assert

      __builtin_trap();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多