gdb检查宏值不适用于android

时间:2014-08-22 18:46:24

标签: android gdb

当我在android原生应用程序上使用gdb debug时,我总是无法使用以下命令获取宏值:

(gdb) info macro ERROR_IO
The symbol `ERROR_IO' has no definition as a C/C++ preprocessor macro
at <user-defined>:-1

源代码中ERROR_IO的定义如下:

namespace android {

enum {
    MEDIA_ERROR_BASE        = -1000,

    ERROR_ALREADY_CONNECTED = MEDIA_ERROR_BASE,
    ERROR_NOT_CONNECTED     = MEDIA_ERROR_BASE - 1,
    ERROR_UNKNOWN_HOST      = MEDIA_ERROR_BASE - 2,
    ERROR_CANNOT_CONNECT    = MEDIA_ERROR_BASE - 3,
    ERROR_IO                = MEDIA_ERROR_BASE - 4,
    ERROR_CONNECTION_LOST   = MEDIA_ERROR_BASE - 5,

这意味着该值应为-1004。但命令工作正常:

(gdb) p ERROR_IO+0
$5 = -1004

这是否意味着定义不正确?

1 个答案:

答案 0 :(得分:1)

ERROR_IO不是宏,它是枚举常量。因此,info macro无法展示它。

仅供参考,您可以获得与+0' using the / d`修饰符相同的效果:

(gdb) p/d ERROR_IO