Use Xamarin Studio’s native deBUGging support for deBUGging C# and
other managed languages code and use LLDB when you need to deBUG C,
C++ or Objective C codethat you might be linking with your Xamarin.iOS
project.
但是我找不到任何有关如何使用LLDB调试Xamarin应用程序的文档.如果我在iPhone模拟器中运行我的应用程序,并尝试使用LLDB附加到它,我会收到以下错误:
(lldb) attach --pID 37993Process 37993 exited with status = -1 (0xffffffff) lost connectionerror: 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调试本机库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)