android::CallStack代码分析

本文介绍如何使用android::CallStack工具进行C++代码分析。通过调用update()更新当前线程的调用栈,并使用dump()或log()方法输出到控制台或日志文件。此工具依赖于libbacktrace实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android::CallStack用于代码分析
C++代码架构经常特别复杂,可以使用android::CallStack将所在线程的调用栈打印出来
基本用法:

#inclucde<utils/CallStack.h>
#include<utils/Log.h>

android::CallStack stack;
stack.update();
stack.dump(1); //输出到printf
stack.log(debug); //输出到logcat

CallStack的实现其实是通过libbacktrace实现的,后面有需求可以分析下源码

UATHelper: 打包 (Android (ASTC)): LogCook: Display: Cooked packages 3051 Packages Remain 592 Total 3643 UATHelper: 打包 (Android (ASTC)): LogOutputDevice: Warning: UATHelper: 打包 (Android (ASTC)): Script Stack (0 frames) : UATHelper: 打包 (Android (ASTC)): LogWindows: Error: appError called: Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp] [Line: 4668] UATHelper: 打包 (Android (ASTC)): /Engine/Private/LocalVertexFactoryCommon.ush:146:32: warning: conversion from larger type 'float4' to smaller type '__restrict min16float4', possible loss of data [-Wconversion] UATHelper: 打包 (Android (ASTC)): Interpolants.TangentToWorld0 = float4(InTangentToWorld0, 0); UATHelper: 打包 (Android (ASTC)): ^ UATHelper: 打包 (Android (ASTC)): /Engine/Private/LocalVertexFactoryCommon.ush:147:32: warning: conversion from larger type 'float4' to smaller type '__restrict min16float4', possible loss of data [-Wconversion] UATHelper: 打包 (Android (ASTC)): Interpolants.TangentToWorld2 = float4(InTangentToWorld2, InTangentToWorldSign); UATHelper: 打包 (Android (ASTC)): ^ UATHelper: 打包 (Android (ASTC)): /Engine/Private/LocalVertexFactory.ush:541:17: warning: conversion from larger type 'float3x3' to smaller type 'min16float3x3', possible loss of data [-Wconversion] UATHelper: 打包 (Android (ASTC)): min16float3x3 LocalToWorld = LWCToFloat3x3(GetInstanceData(Intermediates).LocalToWorld); UATHelper: 打包 (Android (ASTC)): ^ UATHelper: 打包 (Android (ASTC)): /Engine/Private/LocalVertexFactory.ush:542:15: warning: conversion from larger type 'float3' to smaller type 'min16float3', possible loss of data [-Wconversion] UATHelper: 打包 (Android (ASTC)): min16float3 InvScale = GetInstanceData(Intermediates).InvNonUniformScale; UATHelper: 打包 (Android (ASTC)): ^ UATHelper: 打包 (Android (ASTC)): /Engine/Private/LocalVertexFactory.ush:853:36: warning: conversion from larger type 'float' to smaller type 'min16float', possible loss of data [-Wconversion] UATHelper: 打包 (Android (ASTC)): Intermediates.TangentToWorldSign = TangentSign * GetInstanceData(Intermediates).DeterminantSign; UATHelper: 打包 (Android (ASTC)): ^ UATHelper: 打包 (Android (ASTC)): /Engine/Private/MobileBasePassVertexShader.usf:42:15: warning: conversion from larger type 'float3' to smaller type 'min16float3', possible loss of data [-Wconversion] UATHelper: 打包 (Android (ASTC)): min16float3 WorldPositionOffset = GetMaterialWorldPositionOffset(VertexParameters); UATHelper: 打包 (Android (ASTC)): ^ UATHelper: 打包 (Android (ASTC)): Struct member does not have MatrixStride set. UATHelper: 打包 (Android (ASTC)): Failed to compile default material /Engine/EngineMaterials/DefaultLightFunctionMaterial.DefaultLightFunctionMaterial! PackagingResults: Error: appError called: Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp] [Line: 4668] PackagingResults: Warning: conversion from larger type 'float4' to smaller type '__restrict min16float4', possible loss of data [-Wconversion] PackagingResults: Warning: conversion from larger type 'float4' to smaller type '__restrict min16float4', possible loss of data [-Wconversion] PackagingResults: Warning: conversion from larger type 'float3x3' to smaller type 'min16float3x3', possible loss of data [-Wconversion] PackagingResults: Warning: conversion from larger type 'float3' to smaller type 'min16float3', possible loss of data [-Wconversion] PackagingResults: Warning: conversion from larger type 'float' to smaller type 'min16float', possible loss of data [-Wconversion] PackagingResults: Warning: conversion from larger type 'float3' to smaller type 'min16float3', possible loss of data [-Wconversion] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: begin: stack for UAT UATHelper: 打包 (Android (ASTC)): LogWindows: Error: === Critical error: === UATHelper: 打包 (Android (ASTC)): LogWindows: Error: UATHelper: 打包 (Android (ASTC)): LogWindows: Error: Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp] [Line: 4668] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: /Engine/Private/LocalVertexFactoryCommon.ush:146:32: warning: conversion from larger type 'float4' to smaller type '__restrict min16float4', possible loss of data [-Wconversion] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: Interpolants.TangentToWorld0 = float4(InTangentToWorld0, 0); UATHelper: 打包 (Android (ASTC)): LogWindows: Error: ^ UATHelper: 打包 (Android (ASTC)): LogWindows: Error: /Engine/Private/LocalVertexFactoryCommon.ush:147:32: warning: conversion from larger type 'float4' to smaller type '__restrict min16float4', possible loss of data [-Wconversion] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: Interpolants.TangentToWorld2 = float4(InTangentToWorld2, InTangentToWorldSign); UATHelper: 打包 (Android (ASTC)): LogWindows: Error: ^ UATHelper: 打包 (Android (ASTC)): LogWindows: Error: /Engine/Private/LocalVertexFactory.ush:541:17: warning: conversion from larger type 'float3x3' to smaller type 'min16float3x3', possible loss of data [-Wconversion] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: min16float3x3 LocalToWorld = LWCToFloat3x3(GetInstanceData(Intermediates).LocalToWorld); UATHelper: 打包 (Android (ASTC)): LogWindows: Error: ^ UATHelper: 打包 (Android (ASTC)): LogWindows: Error: /Engine/Private/LocalVertexFactory.ush:542:15: warning: conversion from larger type 'float3' to smaller type 'min16float3', possible loss of data [-Wconversion] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: min16float3 InvScale = GetInstanceData(Intermediates).InvNonUniformScale; UATHelper: 打包 (Android (ASTC)): LogWindows: Error: ^ UATHelper: 打包 (Android (ASTC)): LogWindows: Error: /Engine/Private/LocalVertexFactory.ush:853:36: warning: conversion from larger type 'float' to smaller type 'min16float', possible loss of data [-Wconversion] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: Intermediates.TangentToWorldSign = TangentSign * GetInstanceData(Intermediates).DeterminantSign; UATHelper: 打包 (Android (ASTC)): LogWindows: Error: ^ UATHelper: 打包 (Android (ASTC)): LogWindows: Error: /Engine/Private/MobileBasePassVertexShader.usf:42:15: warning: conversion from larger type 'float3' to smaller type 'min16float3', possible loss of data [-Wconversion] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: min16float3 WorldPositionOffset = GetMaterialWorldPositionOffset(VertexParameters); UATHelper: 打包 (Android (ASTC)): LogWindows: Error: ^ UATHelper: 打包 (Android (ASTC)): LogWindows: Error: Struct member does not have MatrixStride set. UATHelper: 打包 (Android (ASTC)): LogWindows: Error: Failed to compile default material /Engine/EngineMaterials/DefaultLightFunctionMaterial.DefaultLightFunctionMaterial! UATHelper: 打包 (Android (ASTC)): LogWindows: Error: UATHelper: 打包 (Android (ASTC)): LogWindows: Error: UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007fff00956a0e UnrealEditor-Engine.dll!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007fff00954e77 UnrealEditor-Engine.dll!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007ffefc6c0ba5 UnrealEditor-UnrealEd.dll!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007ffefc7411fd UnrealEditor-UnrealEd.dll!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007ffefc7518c7 UnrealEditor-UnrealEd.dll!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007ffefc7511a5 UnrealEditor-UnrealEd.dll!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007ffefc4af780 UnrealEditor-UnrealEd.dll!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007ffefc4d16a3 UnrealEditor-UnrealEd.dll!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007ff646b1b0ce UnrealEditor-Cmd.exe!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007ff646b12688 UnrealEditor-Cmd.exe!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007ff646b1296a UnrealEditor-Cmd.exe!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007ff646b15680 UnrealEditor-Cmd.exe!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007ff646b271b4 UnrealEditor-Cmd.exe!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007ff646b296f2 UnrealEditor-Cmd.exe!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007fff72077034 KERNEL32.DLL!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: [Callstack] 0x00007fff728226a1 ntdll.dll!UnknownFunction [] UATHelper: 打包 (Android (ASTC)): LogWindows: Error: UATHelper: 打包 (Android (ASTC)): LogWindows: Error: end: stack for UAT PackagingResults: Error: begin: stack for UAT PackagingResults: Error: === Critical error: === PackagingResults: Error: Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp] [Line: 4668] PackagingResults: Warning: conversion from larger type 'float4' to smaller type '__restrict min16float4', possible loss of data [-Wconversion] PackagingResults: Error: Interpolants.TangentToWorld0 = float4(InTangentToWorld0, 0); PackagingResults: Error: ^ PackagingResults: Warning: conversion from larger type 'float4' to smaller type '__restrict min16float4', possible loss of data [-Wconversion] PackagingResults: Error: Interpolants.TangentToWorld2 = float4(InTangentToWorld2, InTangentToWorldSign); PackagingResults: Error: ^ PackagingResults: Warning: conversion from larger type 'float3x3' to smaller type 'min16float3x3', possible loss of data [-Wconversion] PackagingResults: Error: min16float3x3 LocalToWorld = LWCToFloat3x3(GetInstanceData(Intermediates).LocalToWorld); PackagingResults: Error: ^ PackagingResults: Warning: conversion from larger type 'float3' to smaller type 'min16float3', possible loss of data [-Wconversion] PackagingResults: Error: min16float3 InvScale = GetInstanceData(Intermediates).InvNonUniformScale; PackagingResults: Error: ^ PackagingResults: Warning: conversion from larger type 'float' to smaller type 'min16float', possible loss of data [-Wconversion] PackagingResults: Error: Intermediates.TangentToWorldSign = TangentSign * GetInstanceData(Intermediates).DeterminantSign; PackagingResults: Error: ^ PackagingResults: Warning: conversion from larger type 'float3' to smaller type 'min16float3', possible loss of data [-Wconversion] PackagingResults: Error: min16float3 WorldPositionOffset = GetMaterialWorldPositionOffset(VertexParameters); PackagingResults: Error: ^ PackagingResults: Error: Struct member does not have MatrixStride set. PackagingResults: Error: Failed to compile default material /Engine/EngineMaterials/DefaultLightFunctionMaterial.DefaultLightFunctionMaterial! PackagingResults: Error: [Callstack] 0x00007fff00956a0e UnrealEditor-Engine.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007fff00954e77 UnrealEditor-Engine.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ffefc6c0ba5 UnrealEditor-UnrealEd.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ffefc7411fd UnrealEditor-UnrealEd.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ffefc7518c7 UnrealEditor-UnrealEd.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ffefc7511a5 UnrealEditor-UnrealEd.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ffefc4af780 UnrealEditor-UnrealEd.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ffefc4d16a3 UnrealEditor-UnrealEd.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff646b1b0ce UnrealEditor-Cmd.exe!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff646b12688 UnrealEditor-Cmd.exe!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff646b1296a UnrealEditor-Cmd.exe!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff646b15680 UnrealEditor-Cmd.exe!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff646b271b4 UnrealEditor-Cmd.exe!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff646b296f2 UnrealEditor-Cmd.exe!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007fff72077034 KERNEL32.DLL!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007fff728226a1 ntdll.dll!UnknownFunction [] PackagingResults: Error: end: stack for UAT UATHelper: 打包 (Android (ASTC)): Took 674.0243639s to run UnrealEditor-Cmd.exe, ExitCode=3 UATHelper: 打包 (Android (ASTC)): ERROR: Cook failed. UATHelper: 打包 (Android (ASTC)): (see C:\Users\Administrator\AppData\Roaming\Unreal Engine\AutomationTool\Logs\D+UE5+UE_5.1\Log.txt for full exception trace) UATHelper: 打包 (Android (ASTC)): AutomationTool executed for 0h 11m 45s UATHelper: 打包 (Android (ASTC)): AutomationTool exiting with ExitCode=25 (Error_UnknownCookFailure) UATHelper: 打包 (Android (ASTC)): BUILD FAILED PackagingResults: Error: Cook failed. 分析打包失败原因
06-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值