本文整理汇总了C++中SystemRuntime::GetExtendedBacktraceThread方法的典型用法代码示例。如果您正苦于以下问题:C++ SystemRuntime::GetExtendedBacktraceThread方法的具体用法?C++ SystemRuntime::GetExtendedBacktraceThread怎么用?C++ SystemRuntime::GetExtendedBacktraceThread使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SystemRuntime
的用法示例。
在下文中一共展示了SystemRuntime::GetExtendedBacktraceThread方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetExtendedBacktraceThread
SBThread SBThread::GetExtendedBacktraceThread(const char *type) {
Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
std::unique_lock<std::recursive_mutex> lock;
ExecutionContext exe_ctx(m_opaque_sp.get(), lock);
SBThread sb_origin_thread;
if (exe_ctx.HasThreadScope()) {
Process::StopLocker stop_locker;
if (stop_locker.TryLock(&exe_ctx.GetProcessPtr()->GetRunLock())) {
ThreadSP real_thread(exe_ctx.GetThreadSP());
if (real_thread) {
ConstString type_const(type);
Process *process = exe_ctx.GetProcessPtr();
if (process) {
SystemRuntime *runtime = process->GetSystemRuntime();
if (runtime) {
ThreadSP new_thread_sp(
runtime->GetExtendedBacktraceThread(real_thread, type_const));
if (new_thread_sp) {
// Save this in the Process' ExtendedThreadList so a strong
// pointer retains the
// object.
process->GetExtendedThreadList().AddThread(new_thread_sp);
sb_origin_thread.SetThread(new_thread_sp);
if (log) {
const char *queue_name = new_thread_sp->GetQueueName();
if (queue_name == NULL)
queue_name = "";
log->Printf("SBThread(%p)::GetExtendedBacktraceThread() => new "
"extended Thread "
"created (%p) with queue_id 0x%" PRIx64
" queue name '%s'",
static_cast<void *>(exe_ctx.GetThreadPtr()),
static_cast<void *>(new_thread_sp.get()),
new_thread_sp->GetQueueID(), queue_name);
}
}
}
}
}
} else {
if (log)
log->Printf("SBThread(%p)::GetExtendedBacktraceThread() => error: "
"process is running",
static_cast<void *>(exe_ctx.GetThreadPtr()));
}
}
if (log && sb_origin_thread.IsValid() == false)
log->Printf("SBThread(%p)::GetExtendedBacktraceThread() is not returning a "
"Valid thread",
static_cast<void *>(exe_ctx.GetThreadPtr()));
return sb_origin_thread;
}