2

在 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 应用程序,什么是正确的?

4

2 回答 2

2

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

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

于 2012-09-28T22:46:54.483 回答
0
#include <signal.h>
raise(SIGTRAP);

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

__builtin_trap();
于 2014-12-10T13:49:47.120 回答