Follow

分享一手调试诀窍
当你新加了一个进程,但是没有任何日志被打印出来的时候,如何快速判断是哪里的问题?

首先,如果新加入的日志,牵扯到编译链的修改(会新生成一个so并连接),那么,先把这个进程的相关代码提取出来,然后单独编译成一个bin文件,查看是否有未定义符号
其次,考虑异常中断。把编译出的bin文件,在测试环境中直接执行(可以考虑做一个main函数),然后在关键函数的后面加一个while(1)的循环,如果循环推出,则说明发生了中断,查看日志,看下是不是段错误之类的问题

我今天遇到的情况就是未定义符号+段错误,后面要把异常调用栈给搞出来,OHOS居然不是天生就带这个功能,还要调用内部的工具/叹气

· · Web · 1 · 0 · 1

@mao libsegv backtrace() libunwind LLVM 自己实现的 libunwind 大概可以让程序临死前打印栈回溯

@literalkernel 没事,它有自己的工具打印调用栈
而且三方的库导入真的太痛苦了,它的编译链用的不是标准的cmake或者makelist,而是在build.gn的基础上做了魔改/叹气

@literalkernel 很傻逼的一个东西,而且用的人太少了,详细的中文语法教程都没有,只能啃英文原文

Sign in to participate in the conversation
小森林

每个人都有属于自己的一片森林,也许我们从来不曾走过,但它一直在那里,总会在那里。迷失的人迷失了,相逢的人会再相逢。愿这里,成为属于你的小森林。