本机代码中的分段错误

时间:2011-09-17 08:26:23

标签: java android

我在android openssl中看到了一些分段错误,

08-30 03:18:00.358: INFO/DEBUG(2350): signal 11 (SIGSEGV), fault addr cbfb0d91
08-30 03:18:00.358: INFO/DEBUG(2350):  r0 00000010  r1 cbfb0d8d  r2 00000000  r3 cbfb0d8d
08-30 03:18:00.358: INFO/DEBUG(2350):  r4 afd42328  r5 002db268  r6 00000108  r7 00000000
08-30 03:18:00.358: INFO/DEBUG(2350):  r8 44eafb80  r9 44724e98  10 44724e84  fp 44eafed8
08-30 03:18:00.358: INFO/DEBUG(2350):  ip 00000000  sp 44eaf900  lr afd0c8e3  pc afd0c19a  cpsr a0000030

从线程我看到这只是原生呼叫

"Thread-21" prio=5 tid=20 NATIVE 
  | group="main" sCount=1 dsCount=0 s=N obj=0x47d1b5c0 self=0x1242b0 
  | sysTid=2973 nice=0 sched=0/0 cgrp=default handle=894192 
  | schedstat=( 30654282279 11238141923 4051 ) 
  at org.openssl.NativeBN.BN_generate_prime_ex(Native Method) 
  at java.math.BigInt.generatePrimeDefault(BigInt.java:382) 
  at java.math.BigInteger.<init>(BigInteger.java:271) 
  at org.bouncycastle.crypto.generators.RSAKeyPairGenerator.generateKeyPair(RSAKeyPairGenerator.java:73) 
  at org.bouncycastle.jce.provider.JDKKeyPairGenerator$RSA.generateKeyPair(JDKKeyPairGenerator.java:115)

如何调试android本机代码问题

1 个答案:

答案 0 :(得分:0)

您需要一份您要调试的内容的副本。编译库的调试版本并使用像gdb这样的级别调试器(或类似于android)可能有一个IDE使这更容易。