gpt4 book ai didi

xamarin - Xamarin 和 Xamarin 表单的符号包(PDB 文件)

转载 作者:行者123 更新时间:2023-12-03 14:33:55 29 4
gpt4 key购买 nike

我们每天都在使用 Xamarin 和 Xamarin Forms,并且经常遇到异常而没有任何关于如何调试的有用信息。

有时它是我们的目标,有时是 Xamarin 中的错误,尤其是 Xamarin Forms。

最常见的异常(exception)是 NullReferenceException我们很难排除故障。

如果我们可以访问 Xamarin Forms 符号,那么通过逐步执行我们的代码和 Xamarin 代码来查明问题会容易得多。

有没有办法获得 Xamarin 符号包,即带有 nuget 的 pdb 文件?

(直接从源代码编译会在使用 3rd 方包时产生问题)。

最佳答案

如果您检查 Xamarin.Forms 包,它包含 mdbpdb文件,因此从技术上讲,您可以通过 Xamarin.Forms 代码进行调试。

enter image description here

If you want to go through Xamarin.Forms code, you can check this "hack" that includes pdb files automatically modifiying compilation's targets.

https://forums.xamarin.com/discussion/73572/debug-stepping-into-own-nuget-package



如果您发现错误并且堆栈仅显示 native 代码

您可以使用单声道命令行。

您可以使用功能 mono_print_method_from_ip (需要一个地址)以获取给定地址的方法的名称。这在检查堆栈跟踪时特别有用。函数重命名为 mono_pmip在 Mono 1.1.x 系列中(有一段时间该函数被称为 mono_print_method_from_ip )。

例如,当遇到堆栈跟踪时,如下所示:
(gdb) where
#0 ves_icall_System_String_GetHashCode (me=0x80795d0) at string-icalls.c:861
#1 0x0817f490 in ?? ()
#2 0x0817f42a in ?? ()
#3 0x0817f266 in ?? ()
#4 0x0817f1a5 in ?? ()

您可以使用 mono_print_method_from_ip 函数(如果您使用 Mono 1.1.x,则使用 mono_pmip)找出每个地址的方法:
(gdb) p mono_pmip (0x0817f490)
IP 0x817f490 at offset 0x28 of method (wrapper managed-to-native) System.String:GetHashCode () (0x817f468 0x817f4a4)
$1 = void
(gdb) p mono_pmip (0x0817f42a)
IP 0x817f42a at offset 0x52 of method System.Collections.Hashtable:GetHash (object) (0x817f3d8 0x817f43b)
$2 = void

Reference http://www.mono-project.com/docs/debug+profile/debug/

关于xamarin - Xamarin 和 Xamarin 表单的符号包(PDB 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48827480/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com