Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当本机(C/C+;+;)进程在linux中未崩溃时,如何显式转储该进程的调用堆栈信息_Android_Linux_Process - Fatal编程技术网

Android 当本机(C/C+;+;)进程在linux中未崩溃时,如何显式转储该进程的调用堆栈信息

Android 当本机(C/C+;+;)进程在linux中未崩溃时,如何显式转储该进程的调用堆栈信息,android,linux,process,Android,Linux,Process,伙计们: 如您所知,在linux/android中,当一个进程收到一些SIG,这意味着该进程发生崩溃,例如页面错误、段错误等,那么对于这些信号,系统的默认行为将首先转储核心信息,包括调用堆栈信息,然后删除该进程 但有时,虽然我的程序没有崩溃,但它实际上已经异常运行,并不是我所期望的。然后我想知道它现在正在运行的代码,所以我想手动转储它的调用堆栈信息。那怎么办呢?是否手动向其发送段故障信号?否则 有人可以分享经验吗 提前做很多事情。抛出异常并立即捕获它。我对C不够熟悉,但在java中,这看起来是这

伙计们:

如您所知,在linux/android中,当一个进程收到一些SIG,这意味着该进程发生崩溃,例如页面错误、段错误等,那么对于这些信号,系统的默认行为将首先转储核心信息,包括调用堆栈信息,然后删除该进程

但有时,虽然我的程序没有崩溃,但它实际上已经异常运行,并不是我所期望的。然后我想知道它现在正在运行的代码,所以我想手动转储它的调用堆栈信息。那怎么办呢?是否手动向其发送段故障信号?否则

有人可以分享经验吗


提前做很多事情。

抛出异常并立即捕获它。我对C不够熟悉,但在java中,这看起来是这样的:

try {
    throw new RuntimeException("bla bla");
} catch (Exception ex) {
    ex.printStackTrace();
}

好吧,如果你想要简单、粗糙而且可能有效的,反引用空指针就可以了。从标题来看,想要的似乎不太可能是java(Dalvik)虚拟机的堆栈跟踪。相反,arm(或其他)处理器的实际本机调用堆栈才是所需要的。对于ARM目标来说,这比其他许多目标更难确定,因此,让Android内置的本机崩溃日志功能来完成这项艰巨的工作可能是可取的。啊,很抱歉。我模模糊糊地记得它是关于C的,因为我昨天确实读过它的标题,但今天我只看了文本和标签。你认为C中对应的东西都不是他想要的吗?C没有例外。C++确实是这样,但只不过是一个丑陋的黑客(Android上特别丑陋和可选的),所以只使用它们导致堆栈转储似乎有点迂回。