我的 flutter 应用程序使用混淆来构建和创建符号。崩溃堆栈跟踪在 Firebase Crashlytics 控制台中显得很模糊。我知道我们可以使用“flutter symbolize -i command”来反混淆堆栈跟踪,但是有没有办法将此符号上传到 Firebase Crashlytics 控制台?
我认为有一种方法可以做到这一点SecurityManager,但我不想为此在应用程序中引入它。
有没有办法使用其他解决方案捕获并记录所谓的 exit() 的堆栈跟踪?
我的项目被冻结的情况.我看到只有100%使用其中一个CPU(其余为0%,但我使用的是SMP).
我的管理控制台说:
=ERROR REPORT==== 11-Feb-2011::00:45:00 ===
** Node 'node@example.com' not responding **
** Removing (timedout) connection **
Run Code Online (Sandbox Code Playgroud)
之后我无法连接到节点.
如果我使用C++进行编程,我可以进行调试构建,当出现这种情况时,我可以附加到我的进程并查看它循环的代码.
但我怎么能在Erlang中做到这一点?我怎样才能获得调用堆栈或其他东西来帮助我理解错误的原因?
感谢您的任何帮助.
在我的应用程序继续崩溃之后,我设置了一个异常断点,然后才能执行我的任何代码.我不知道出了什么问题.我打印出堆栈跟踪,但堆栈跟踪中唯一可辨认的部分是问题在于:
return UIApplicationMain(argc, argv, nil, NSStringFromClass([TACGridAppDelegate class]));
Here is the stack trace:
`#0 0x014b7cb4 in objc_exception_throw ()`
`#1 0x013209c1 in -[NSException raise] ()`
`#2 0x00a99143 in -[NSObject(NSKeyValueCoding) setValue:forUndefinedKey:] ()`
`#3 0x00a0ad5f in _NSSetUsingKeyValueSetter ()`
`#4 0x00a0accf in -[NSObject(NSKeyValueCoding) setValue:forKey:] ()`
`#5 0x00a25d78 in -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] ()`
`#6 0x0035e7af in -[UIRuntimeOutletConnection connect] ()`
`#7 0x013228ba in -[NSObject performSelector:] ()`
`#8 0x0128b251 in -[NSArray makeObjectsPerformSelector:] ()`
`#9 0x0035d303 in -[UINib instantiateWithOwner:options:] ()`
`#10 0x0035eeab in -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] ()`
`#11 0x00142f2f in -[UIApplication …Run Code Online (Sandbox Code Playgroud) 不要鞭打一死 马,但我发现CodePlex上的一个项目叫StackWalker,它提供了原生应用程序的堆栈跟踪(C++应用程序).对现代C++不太了解,这对VB6应用程序也有用吗?VB6的功能是否与C++中的功能有所不同?
程序中没有一个方法"知道"它在堆栈中的位置.它所知道的只是它自己的小工作,它就是这样做并且回归.因此,当抛出异常并打印堆栈跟踪时,它来自何处?
是否隐含地在JVM中的每个应用程序旁边运行一个单独的Thread来监视程序的状态?或者JVM本身是否拥有此信息,并且异常以某种方式在抛出时从中提取数据?
如果是这种情况之一,是否可以使用一些调用来检索堆栈跟踪(来自监视器线程或JVM)而不抛出异常?
我们有一个"logger"类,它具有获取日志消息的log方法,并将消息和调用方法写入日志,首先我们还要将以下内容发送给log方法新参数Method.Base.GetCurrentMethod().我找到了另一种方法,使用Relection.MethodBase:
public void Log(string message)
{
stackTrace = new StackTrace();
string methodName = stackTrace.GetFrame(1).GetMethod().Name;
....
}
Run Code Online (Sandbox Code Playgroud)
但我有一个问题,每次调用log方法,我都被迫创建新实例StackTrace,当我尝试在构造函数中创建实例时,我得到方法名称InvokeMethod.
我们在项目中使用MEF.任何想法如何改进代码?
我已经开始通过Test Flight测试我的应用程序,并且我不时收到此错误:_sigtramp + 42.它仅在应用程序启动时发生,目前仅在iOS 6.0上发生.有没有其他人遇到这个或你能帮助我找出出错的地方吗?

在对iPhone 5S设备/ Xcode的7运行的演示应用,我试过让frame pointer一个的任意线程使用thread_get_state,但总是导致不正确的一项:
- (BOOL)fillThreadState:(thread_t)thread intoMachineContext:(_STRUCT_MCONTEXT *)machineContext {
mach_msg_type_number_t state_count = MACHINE_THREAD_STATE_COUNT;
kern_return_t kr = thread_get_state(thread, MACHINE_THREAD_STATE, (thread_state_t)&machineContext->__ss, &state_count);
if (kr != KERN_SUCCESS) {
char *str = mach_error_string(kr);
printf("%s\n", str);
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
我阅读了这样的帧指针:uintptr_t fp = machineContext.__ss.__fp;根据Apple Doc(ARMv6和ARM64),
寄存器R7用作ARMv6上的帧指针
而x64在ARM64上
帧指针寄存器(x29)必须始终寻址有效的帧记录,尽管某些功能(例如叶函数或尾部调用)可能选择不在此列表中创建条目。结果,即使没有调试信息,堆栈跟踪也将始终有意义。
_STRUCT_ARM_THREAD_STATE64
{
__uint64_t __x[29]; /* General purpose registers x0-x28 */
__uint64_t __fp; /* Frame pointer x29 */
__uint64_t __lr; /* Link register …Run Code Online (Sandbox Code Playgroud) 我可能会要求不可能,但我仍在疑惑.
是否有可能获得宏的堆栈跟踪的模拟?也就是说,如果在某个函数中设置了一个断点,那么宏栈跟踪将列出宏扩展的所有宏(可能带有它们的输入)以达到代码中的那个级别.
据我所知,目前这是不可能的,但可能是由于我的理解浅薄.Allegro或SBCL是否允许或跟踪此类信息?看起来这对于调试宏非常有用.
任何帮助或建议表示赞赏.
stack-trace ×10
ios ×3
exception ×2
java ×2
c ×1
c# ×1
c++ ×1
callstack ×1
common-lisp ×1
crashlytics ×1
erlang ×1
firebase ×1
flutter ×1
iphone ×1
macros ×1
mef ×1
obfuscation ×1
objective-c ×1
stack-frame ×1
systemexit ×1
testflight ×1
trace ×1
vb6 ×1