代码之家  ›  专栏  ›  技术社区  ›  solotim

ldu调试与java

  •  1
  • solotim  · 技术社区  · 16 年前

    当我设置LD_DEBUG=files并运行Java程序时,我发现许多错误如下:

    /linux/depot/java-1.6.0_16_32/jre/lib/i386/libjava.so: error: symbol lookup error: undefined symbol: Java_sun_java2d_loops_MaskBlit_MaskBlit (fatal)  
    

    这个信息是可怕的,但显然我的程序运行正常。有人能告诉我为什么会这样吗?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Devon_C_Miller    16 年前

    这并不可怕;这是当你构建代码在许多不同的平台上运行时所发生的事情。jvm只是在寻找可选符号。在本例中,与2D和alpha合成有关。如果在运行时找不到符号,则会采用另一个代码路径。你可以把它看作是对图书馆的一种反思。

    jvm代码是这样的:

    TYPE fptr = CAST_TO_FN_PTR(TYPE, dlsym(RTLD_DEFAULT, symbol));
    if (fptr != NULL) {
        // Do something different because this platform supports 'symbol'
    }