2

我通过ndk构建了一个项目,但不幸的是,当它在android模拟器中运行时,它会崩溃并出现以下提示:

[1] + Stopped (signal)        ./secfs secfs-client /data/fuse_dir /data/pwrite/test_11

然后,我按照教程调试我的项目,但它来到了程序集文件。而且我理解汇编文件并不容易。所以,我开始使用核心转储。但是,当系统生成核心文件并且我尝试使用 gdb 读取核心文件时,它会提示以下内容并且 gdb 似乎无法使用它:

 Core was generated by `./secfs secfs-client /data/fuse_dir /data/pwrite/test_11'.
Program terminated with signal 11, Segmentation fault.
#0  0x4001e7f0 in ?? ()
(gdb) bt
#0  0x4001e7f0 in ?? ()
#1  0x4001fdfa in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

最后,我不知道下一步该做什么,有什么想法吗?谢谢

4

1 回答 1

1

使用(蛮力)力量。在您的代码中放置日志语句并查看它停止的位置。通过这种方式,您将了解导致 SEGFAULT 的代码部分是什么。运行应用程序几次,看看最后一条日志语句是什么。不要假设紧跟最后一条日志语句的代码是有问题的代码。有时某些日志语句不会出现在日志中。我认为这是因为文本的内部缓冲。这就是为什么您应该多次运行代码的原因。

于 2012-06-13T07:55:42.937 回答