我将以前一个很大的C++项目做成了一个动态库,放在了“android/.../system/lib”中,然后编了一个Android的应用程序,在程序中运用JNI调用了库中的内容。想问一下有没有办法对动态库里面的内容进行调试或打出LOG?
PS:我用的是Eclipse+模拟器。
谢谢。

解决方案 »

  1.   

    To jinlking:谢了。
    但是怎样才能(从动态库里)打印出信息呢?能否说一下。
      

  2.   

    To yili_xie:谢谢。
    用什么样的打印函数,它会输出到哪里?能否说得稍微具体点?
    我试过,这样好像不行的。
      

  3.   

    log很简单的,举个简单的例子:
    LOGD("initHeapLocked: raw size= %d x %d", picture_width, picture_height);
    LOGE("initHeapLocked: raw size= %d x %d", picture_width, picture_height);
    D就是debug的意思,E就是error的意思~~
    更详细的log打印方式可以看这个:
    static void show_help(const char *cmd)
    {
        fprintf(stderr,"Usage: %s [options] [filterspecs]\n", cmd);    fprintf(stderr, "options include:\n"
                        "  -s              Set default filter to silent.\n"
                        "                  Like specifying filterspec '*:s'\n"
                        "  -f <filename>   Log to file. Default to stdout\n"
                        "  -r [<kbytes>]   Rotate log every kbytes. (16 if unspecified). Requires -f\n"
                        "  -n <count>      Sets max number of rotated logs to <count>, default 4\n"
                        "  -v <format>     Sets the log print format, where <format> is one of:\n\n"
                        "                  brief process tag thread raw time threadtime long\n\n"
                        "  -c              clear (flush) the entire log and exit\n"
                        "  -d              dump the log and then exit (don't block)\n"
                        "  -g              get the size of the log's ring buffer and exit\n"
                        "  -b <buffer>     request alternate ring buffer\n"
                        "                  ('main' (default), 'radio', 'events')\n"
                        "  -B              output the log in binary");
        fprintf(stderr,"\nfilterspecs are a series of \n"
                       "  <tag>[:priority]\n\n"
                       "where <tag> is a log component tag (or * for all) and priority is:\n"
                       "  V    Verbose\n"
                       "  D    Debug\n"
                       "  I    Info\n"
                       "  W    Warn\n"
                       "  E    Error\n"
                       "  F    Fatal\n"
                       "  S    Silent (supress all output)\n"
                       "\n'*' means '*:d' and <tag> by itself means <tag>:v\n"
                       "\nIf not specified on the commandline, filterspec is set from ANDROID_LOG_TAGS.\n"
                       "If no filterspec is found, filter defaults to '*:I'\n"
                       "\nIf not specified with -v, format is set from ANDROID_PRINTF_LOG\n"
                       "or defaults to \"brief\"\n\n");所有的log信息在DDMS上都可以看到,或者简单点直接在shell里面敲:
    adb shell
    logcat > mylog &
      

  4.   

    To yili_xie:
        非常感谢。