2013-01-07 34 views
0

如何理解這些錯誤?這是與錯誤相關的所有日誌。所有其他都是GC類型的消息。如何調試dalvikvm拒絕操作碼?

01-07 19:14:08.536: W/dalvikvm(5780): VFY: register2 v4-5 values 6,24 
01-07 19:14:08.536: W/dalvikvm(5780): VFY: rejecting opcode 0xce at 0x004a 
01-07 19:14:08.536: W/dalvikvm(5780): VFY: rejected Lnz/co/great_ape/headsup/sat_track/SGP4unit_sgp4;.sgp4 (Lnz/co/great_ape/headsup/sat_track/SGP4SatData;D[D[D)Z 
01-07 19:14:08.536: W/dalvikvm(5780): Verifier rejected class Lnz/co/great_ape/headsup/sat_track/SGP4unit_sgp4; 

我知道代碼,它約爲400行sgp4 satellite tracking software(不是我的代碼)。

當我創建這個類的一個實例的問題被觸發(這是長400條多線)和我已經簡單地註釋掉所有代碼下來跟蹤的問題的這部分代碼,然後取消註釋部分,直到錯誤返回,

這裏的所有變量都是雙打。那麼,爲什麼android拒絕這個代碼與操作碼像OP_DIV_DOUBLE和OP_DIV_DOUBLE_2ADDR

任何方式,這裏是代碼段。

  /* -------------- update for short period periodics ------------ */ 
      if(satrec.method == 'd') 
      { 
       cosisq = cosip * cosip; 
       satrec.con41 = 3.0 * cosisq - 1.0; 
       satrec.x1mth2 = 1.0 - cosisq; 
       satrec.x7thm1 = 7.0 * cosisq - 1.0; 
      } 
      mrt = rl * (1.0 - 1.5 * temp2 * betal * satrec.con41) + 
        0.5 * temp1 * satrec.x1mth2 * cos2u; 
      su = su - 0.25 * temp2 * satrec.x7thm1 * sin2u; 
      xnode = nodep + 1.5 * temp2 * cosip * sin2u; 
      xinc = xincp + 1.5 * temp2 * cosip * sinip * cos2u; 
      mvt = rdotl - nm * temp1 * satrec.x1mth2 * sin2u/xke; 
      rvdot = rvdotl + nm * temp1 * (satrec.x1mth2 * cos2u + 
        1.5 * satrec.con41)/xke; 
+1

糊滿logcat的錯誤 –

+0

如果我猜的沒錯,你叫那些不支持你的設備上的功能。 – rekire

+0

我搜索了操作碼OP_DIV_DOUBLE_2ADDR。訣竅是什麼功能不支持設備(聯網電話)。這一切看起來像我常用的數學函數。 – Rob

回答