I am using IDA 7.5 and Android Emulator ( I tried many version of emulator, like BlueStack etc) trying to debug a native code inside a apk (.so
file ).
Launch apk, IDA select remote linux debugger ( most of Android Emulator are x86 image. ), attach to process
Let's say there's two threads that are about to execute to the address of 0x123
.
And I set a breakpoint in 0x123
, click execute, thread A hit breakpoint as expected. ( its eip
shows 0x123
). But switch to thread B I found that it is stop at 0x124
( it's eip
shows 0x124
). And if I trying to continue executing thread B, IDA report thread B receiving SIGTRAP
at 0x124
.
AFAIK, IDA debug a program by inserting a int 3
instruction. But somehow thread B execute report SIGTRAP
after executing int 3
.
At this point I thought it maybe some strange behavior of Android Emulator. So I tried using GDBSERVER + GDB to reproduce this situation. But every thing works fine.
Then I thought it maybe some issue with IDA's remote linux debugger
, so I select IDA's remote gdb debugger
instead.
But the same issue occur to me.
I also tried IDA's remote debugger with real device and nothing went wrong
Is there anyone familiar with IDA's debugger implementation that can give me some advices. plz.