首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有调用函数的奇怪的iOS崩溃堆栈

没有调用函数的奇怪的iOS崩溃堆栈
EN

Stack Overflow用户
提问于 2019-11-20 06:02:15
回答 1查看 195关注 0票数 1

下面的代码块是一个使用Cronet的iOS应用程序的崩溃堆栈。

我们正试图根据最后一个框架1在源代码中找到确切的崩溃线,

如我们所见,是insert的函数,但它在frame2中没有直接调用(EntryImply::InternalWriteData),

而是在函数EntryImpl::UserBuffer::frame2中调用,

但是写函数没有出现在崩溃堆栈中,

是否有可能将写入作为内联函数来处理?

这是写和InternalWriteData的源代码。

代码语言:javascript
复制
#19. Crashed: CacheThread_BlockFile
SIGSEGV 0x00000001242e57f7
0  libsystem_platform.dylib       0x22d376de4 _platform_memmove + 164
1  Meipai                         0x103f2ec18 
std::__1::enable_if<(__is_forward_iterator<char*>::value) && (is_constructible<char, ```
std::__1::iterator_traits<char*>::reference>::value), std::__1::__wrap_iter<char*> >::type std::__1::vector<char, std::__1::allocator<char> >::insert<char*>(std::__1::__wrap_iter<char const*>, char*, char*) + 18623032
2  Meipai                         0x103f2f7b0 disk_cache::EntryImpl::InternalWriteData(int, int, net::IOBuffer*, int, base::OnceCallback<void (int)>, bool) + 18626000
3  Meipai                         0x103f2f5bc disk_cache::EntryImpl::WriteDataImpl(int, int, net::IOBuffer*, int, base::OnceCallback<void (int)>, bool) + 18625500
4  Meipai                         0x103f3b56c disk_cache::SparseControl::DoChildIO() + 18674572
5  Meipai                         0x103f3a67c disk_cache::SparseControl::DoChildrenIO() + 18670748
6  Meipai                         0x103f3a630 disk_cache::SparseControl::StartIO(disk_cache::SparseControl::SparseOperation, long long, net::IOBuffer*, int, base::OnceCallback<void (int)>) + 18670672
7  Meipai                         0x103f2fc88 disk_cache::EntryImpl::WriteSparseDataImpl(long long, net::IOBuffer*, int, base::OnceCallback<void (int)>) + 18627240
8  Meipai                         0x103f355e8 disk_cache::BackendIO::ExecuteEntryOperation() + 18650120
9  Meipai                         0x103e509c4 base::TaskAnnotator::RunTask(char const*, base::PendingTask*) + 17713124
10 Meipai                         0x103e5ffc0 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::sequence_manager::LazyNow*, bool*) + 17776096
11 Meipai                         0x103e60408 non-virtual thunk to base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork() + 17777192
12 Meipai                         0x103eba4c8 base::MessagePumpCFRunLoopBase::RunWork() + 18146024
EN

回答 1

Stack Overflow用户

发布于 2019-11-21 19:28:09

这不是一个11分贝的回溯,这是从一个CrashReport,对吗?lldb不处理CrashReports,这是一个名为CoreSymbolication的组件的工作,该组件目前不处理内联代码。在崩溃时,CoreSymbolication似乎也找不到这个二进制文件的dSYM,或者您至少可以看到非内联帧的文件&行号。

lldb确实理解内联代码,并且总是在回溯中显示内联的框架堆栈。如果您手头有dSYM,您可以使用lldb来表示事后的崩溃。在2018年有一次关于这个主题的WWDC会议,您可能会发现这是有用的:

https://developer.apple.com/videos/play/wwdc2018/414/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58947719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档