我正在尝试将我的 Android 应用程序与使用 Free Pascal 编译的 JAR 链接。我收到以下构建错误:
[2012-09-14 16:08:38 - MyApp] Dx
EXCEPTION FROM SIMULATION:
[2012-09-14 16:08:38 - MyApp] Dx local 0009: invalid
[2012-09-14 16:08:38 - Yarxi] Dx ...at bytecode offset 00015f2c
locals[0000]: Lcom/mypackage/$Core$$_fpc_nestedvars$70;
locals[0001]: I
locals[0002]: I
locals[0003]: I
locals[0004]: I
locals[0005]: I
locals[0006]: I
locals[0007]: I
locals[0008]: I
locals[0009]: <invalid>
locals[000a]: <invalid>
(..more locals... much more)
locals[06db]: <invalid>
stack[0003]: I
stack[0002]: I
stack[0001]: [I
stack[top0]: int{0x00000000 / 0}
...while working on block 5f23
...while working on method $MyMethod$944$FPR1:(Lcom/mypackage/$Core$$_fpc_nestedvars$70;)V
...while processing $MyMethod$944$FPR1 (Lcom/mypackage/$Core$$_fpc_nestedvars$70;)V
...while processing com/mypackage/Core.class
[2012-09-14 16:08:40 - MyApp] Dx 1 error; aborting
[2012-09-14 16:08:40 - MyApp] Conversion to Dalvik format failed with error 1
错误似乎是在某些时候,代码尝试读取未初始化的本地 0009。
现在,Pascal 不强制初始化局部变量。有可能一开始就省略了初始化。我保留了 Free Pascal 为我生成的 JVM 汇编文件。这些与 Jasmin 一起组装到类文件中。该文件很大 - 我不会在这里粘贴它。
有人可以帮我将错误点追溯到源头吗?错误位于字节码偏移量 00015f2c。有没有办法将其转换回汇编文件行号?