HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 使用lldb使用Xamarin调试本机库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Xamarin debugging documentation表示:

但是我找不到任何有关如何使用LLDB调试Xamarin应用程序的文档.如果我在iPhone模拟器中运行我的应用程序,并尝试使用LLDB附加到它,我会收到以下错误

(lldb) attach --pid 37993
Process 37993 exited with status = -1 (0xffffffff) lost connection

error: attach Failed: lost connection

使用Xcode附加也不会.我尝试了附件的不同变体,但没有一个工作.

有人可以指出我正确的方向,如何使用LLDB调试Xamarin应用程序?此外,我可以在设备上做什么,而不仅仅是在模拟器中?我没有找到有关如何使用LLDB附加到设备上的进程的任何信息.

更新

当我使用lldb连接到我的二进制文件时,看起来调试服务器进程崩溃.以下是调试服务器崩溃报告的链接
https://www.dropbox.com/s/9lizhl2quj9n0cc/debugserver_2015-07-07-131423_gauss.crash?dl=0

更新2

当我在应用程序上运行dtruss时,会打印系统调用,直到遇到

dtrace:启用的探测器ID 2475上的错误(ID 194:syscall :: ptrace:return):DIF偏移量0处于操作#5的无效用户访问

当某个东西调用ptrace(PT_DENY_ATTACH,0);为什么要PT_DENY_ATTACH?

更新3

我跟踪了这​​个函数的ptrace系统调用:mono_assembly_init_with_opt,这在程序的生命中很早就发生了.所有这功能都是调用ptrace,所以如果我刚刚从该函数返回,我可以使用lldb进行调试.

基本上我可以做:

(lldb) process attach --name AppName --waitfor
# when the process starts
(lldb) b mono_assembly_init_with_opt    
(lldb) c
# when the thread breaks
(lldb) thread return 0
(lldb) c

现在我可以用lldb快乐地调试.

但是,我不应该这样做.我的项目配置有什么问题(我可以用lldb调试更简单的应用程序)还是Xamarin是邪恶的?

解决方法

Mac OS X上的编码应用程序只能在其应用程序plist中设置特定属性进行调试.你想要的东西看起来像:
<key>SecTaskAccess</key>
<array>
    <String>allowed</String>
    <String>debug</String>
</array>

你可以看看这个任务的手册页,对这个过程进行一些简洁的描述.

通常对于Xcode项目,这个属性被Xcode插入到你的调试版本中,所以你不需要做任何事情来实现这一点.

我不知道Xamarin是如何工作的,但是它不可能设置此属性.在较旧的OS X系统上,root可以调试任何东西,所以您可以尝试sudo -s,然后从那里调试.但是从优胜美地开始,不被调试的请求得到更广泛的尊重…

大佬总结

以上是大佬教程为你收集整理的ios – 使用lldb使用Xamarin调试本机库全部内容,希望文章能够帮你解决ios – 使用lldb使用Xamarin调试本机库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。