搜索 调试
dnSpyEx:一款强大的.NET反编译、编辑和调试工具

dnSpyEx:一款强大的.NET反编译、编辑和调试工具

说到.NET相关的反编译工具,大家脑海里第一个想到的是什么?ILSpy、dnSpy、还是dotPeek?今天我们将重点介绍一款名为dnSpyEx的开源.NET程序集反编译、编辑和调试工具。dnSpyEx是dnSpy项目的非官方Fork维护版本,具有强大的功能和灵活的使用方式。 dnSpyEx支持浅色、蓝色和深色主题,可用于调试 .NET Framework、.NET Core 和 Unity 程序集,同时也支持编辑 .NET Framework、.NET 和 Unity 程序集。此外,dnSpyEx还提供多语言支持,包括中文、俄语、德语、法语、意大利语和英语等。 dnSpyEx是一款功能强大的.NET反编译工具和调试器,它可以在没有源代码的情况下编辑和调试程序集。如果您对.NET程序集的反编译和调试有兴趣,dnSpyEx将是您的不二选择。 您可以从以下链接下载dnSpyEx: https://github.com/dnSpyEx/dnSpy/releases 下载完成后,双击 dnSpy 即可运行,无需安装: 接下来,我们将创建一个名为 TestSample 的.NET Core控制台应用,并编写一段简单的对象序列化和反序列化代码示例。 以下是项目示例代码: using Newtonsoft.Json;namespace TestSample{    public class Program    {        static void Main(string[] args)        {            var personList = new List();            personList.Add(new Person { Name = "张三", Age = 30 });            string json = JsonConvert.SerializeObject(personList);            Console.WriteLine("序列化后的 JSON 字符串:");            Console.WriteLine(json);            var deserializedPersonList = JsonConvert.DeserializeObject>(json);            Console.WriteLine("\n反序列化后的对象信息:");            foreach (var item in deserializedPersonList)            {                Console.WriteLine($"Name: {item.Name}, Age: {item.Age}");            }        }    }    public class Person    {        public string Name { get; set; }        public int Age { get; set; }    }} 找到dll程序集的路径: ..TestSample\bin\Debug\net8.0 使用dnSpyEx工具调试程序集中的代码: 您可以利用dnSpyEx工具编辑程序集中的代码,进行更多自定义的操作。

网游攻略 2024-05-22
gdb是什么意思(GDB 的 7 个单步调试命令)

gdb是什么意思(GDB 的 7 个单步调试命令)

即使是复杂的函数,也有几种方法可以单步调试,所以下次在排除代码故障时,可以尝试一下这些 GDB 技术。 调试器是一个可以运行你的代码并检查问题的软件。GNU Debugger(GBD)是最流行的调试器之一,在这篇文章中,我研究了 GDB 的step命令和其他几种常见情况的相关命令。step是一个被广泛使用的命令,但它有一些人们不太了解的地方,可能会使得他们十分困惑。此外,还有一些方法可以在不使用step命令的情况下进入一个函数,比如使用不太知名的advance命令。 1、无调试符号 考虑以下这个简单的示例程序: #include 如果你在没有 调试符号debugging sysbols 的情况下进行编译(LCTT 译注:即在使用 gcc编译程序时没有写-g选项),然后在bar上设置一个断点,然后尝试在这个函数内使用step来单步执行语句。GDB 会给出一个 没有行号信息no line number information 的错误信息。 gcc exmp.c -o exmp gdb ./exmp (gdb) b bar Breakpoint 1 at 0x401135 (gdb) r Starting program: /home/ahajkova/exmp Breakpoint 1, 0x0000000000401135 in bar (gdb) step Single stepping until exit from function bar, which has no line number information. i = 2 0x0000000000401168 in main 2、stepi 命令 但是你仍然可以在没有行号信息的函数内部单步执行语句,但要使用 stepi命令来代替step。stepi一次只执行一条指令。当使用 GDB 的stepi命令时,先做display/i $pc通常很有用,这会在每一步之后显示程序计数器program counter 的值和相应的机器指令machine instruction: (gdb) b bar Breakpoint 1 at 0x401135 (gdb) r Starting program: /home/ahajkova/exmp Breakpoint 1, 0x0000000000401135 in bar (gdb) display/i $pc 1: x/i $pc => 0x401135 在上述的 display命令中,i代表机器指令,$pc表示程序计数器寄存器(即 PC 寄存器)。 使用 info registers命令,来打印寄存器的内容,也是十分有用的。 (gdb) info registers rax 0x2 2 rbx 0x7fffffffdbc8 140737488346056 rcx 0x403e18 4210200 (gdb) print $rax $1 = 2 (gdb) stepi 0x0000000000401139 in bar 1: x/i $pc => 0x401139 3、复杂的函数调用 在带调试符号的 -g选项,重新编译示例程序后,你可以使用行号在main中bar调用上设置断点,然后再单步执行bar函数的语句: gcc -g exmp.c -o exmp gdb ./exmp (gdb) b exmp.c:14 Breakpoint 1 at 0x401157: file exmp.c, line 14. (gdb) r Starting program: /home/ahajkova/exmp Breakpoint 1, main at exmp.c:14 14 bar(num); 接下来,用 step,来单步执行bar函数的语句: (gdb) step num at exmp.c:4 4 return 2; 函数调用的参数需要在实际的函数调用之前进行处理,bar函数的参数是num函数,所以num会在bar被调用之前执行。但是,通过 GDB 调试,你怎么才能如愿以偿地进入bar函数呢?你可以使用finish命令,并再次使用step命令。 (gdb) finish Run till exit from #0 num at exmp.c:4 0x0000000000401161 in main at exmp.c:14 14 bar(num); Value returned is $1 = 2 (gdb) step bar (i=2) at exmp.c:9 9 printf("i = %d\n", i); 4、tbreak 命令 tbreak命令会设置一个临时断点。如果你不想设置永久断点,那么这个命令是很有用的。举个例子??,你想进入一个复杂的函数调用,例如f(g(h), i(j), ...),在这种情况下,你需要一个很长的step/finish/step序列,才能到达f函数。如果你设置一个临时断点,然后再使用continue命令,这样就不需要以上的序列了。为了证明这一点,你需要像以前一样将断点设置在main的bar调用上。然后在bar上设置临时断点。当到达该临时断点后,临时断点会被自动删除。 (gdb) r Starting program: /home/ahajkova/exmp Breakpoint 1, main at exmp.c:14 14 bar(num); (gdb) tbreak bar Temporary breakpoint 2 at 0x40113c: file exmp.c, line 9. 在调用 bar的时候遇到断点,并在bar上设置临时断点后,你只需要使用continue继续运行直到bar结束。 (gdb) continue Continuing. Temporary breakpoint 2, bar (i=2) at exmp.c:9 9 printf("i = %d\n", i); 5、disable 命令 类似地,你也可以在 bar上设置一个正常的断点,然后执行continue,然后在不再需要第二个断点时,使用disable命令禁用这个断点,这样也能达到与tbreak相同的效果。 (gdb) b exmp.c:14 Breakpoint 1 at 0x401157: file exmp.c, line 14. (gdb) r Starting program: /home/ahajkova/exmp Breakpoint 1, main at exmp.c:14 14 bar(num); (gdb) b bar Breakpoint 2 at 0x40113c: file exmp.c, line 9. (gdb) c Continuing. Breakpoint 2, bar (i=2) at exmp.c:9 9 printf("i = %d\n", i); (gdb) disable 2 正如你所看到的,info breakpoints命令在Enb列下显示为n,这意味着这个断点已被禁用。但你也能在再次需要这个断点时,再启用它。 (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y 0x0000000000401157 in main at exmp.c:14 breakpoint already hit 1 time 2 breakpoint keep n 0x000000000040113c in bar at exmp.c:9 breakpoint already hit 1 time (gdb) enable 2 (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y 0x000000000040116a in main at exmp.c:19 breakpoint already hit 1 time 2 breakpoint keep y 0x0000000000401158 in bar at exmp.c:14 breakpoint already hit 1 time 6、advance 命令运行程序到指定的位置 另一个进入函数内部的方法是 advance命令。你可以简单地用advance bar,来代替tbreak bar ; continue。这一命令会将程序继续运行到指定的位置。 advance命令的一个很棒的地方在于:如果程序并没有到达你试图进入的位置,那么 GDB 将在当前函数运行完成后停止。因此,程序的执行会受到限制: Breakpoint 1 at 0x401157: file exmp.c, line 14. (gdb) r Starting program: /home/ahajkova/exmp Breakpoint 1, main at exmp.c:14 14 bar(num); (gdb) advance bar bar (i=2) at exmp.c:9 9 printf("i = %d\n", i); 7、skip 命令 进入 bar函数的另一种方式是使用skip num命令: (gdb) b exmp.c:14 Breakpoint 1 at 0x401157: file exmp.c, line 14. (gdb) skip num Function num will be skipped when stepping. (gdb) r Starting program: /home/ahajkova/exmp Breakpoint 1, main at exmp.c:14 14 bar(num); (gdb) step bar (i=2) at exmp.c:9 9 printf("i = %d\n", i); 请使用 info skip命令,来了解 GDB 跳过了哪些函数。num函数被标记为y,表示跳过了num函数: (gdb) info skip Num Enb Glob File RE Function 1 y n 如果不再需要 skip,可以禁用(并稍后重新启用)或完全删除它。你可以添加另一个skip,并禁用第一个skip,然后全部删除。要禁用某个skip,必须指定其编号(例如,skip disable 1),如果没有指定,则会禁用所有的skip。启用或删除skip的工作原理相同: (gdb) skip bar (gdb) skip disable 1 (gdb) info skip Num Enb Glob File RE Function 1 n n GDB 的 step 命令 使用 GDB 的 step命令是调试程序的一个有用工具。即使是复杂的函数,也有几种方法可以单步调试这些函数,所以下次你在排除代码问题的时候,可以尝试一下这些 GDB 技术。 via: https://opensource.com/article/22/12/gdb-step-command 作者:Alexandra选题:lkxed译者:chai001125校对:wxy 本文由 LCTT原创编译,Linux中国荣誉推出

资讯百科 2023-03-24
usb调试模式,如何打开手机USB调试功能?

usb调试模式,如何打开手机USB调试功能?

作为Android手机,如果我们需要将手机连接电脑传输文件usb调试模式、下载安装应用软件、备份文件甚至ROOT等,都需要打开手机的USB调试。可是每个手机的USB调试的位置和打开的方式都有所不同,所以这里从Android4.2-4.4版本出发,为大家介绍Android手机打开USB调试的方法。 4.2、4.3、4.4 系统打开方法 1、点击手机Menu键(菜单键),在弹出的菜单中选择设置(Setting),或在应用程序中找到设置程序点击进入; 2、点击关于手机; 3、连续点击七次版本号; 4、再返回设置菜单界面选择开发者者选项; 5、点击打开右上角的开关,即可打开 USB调试模式; 6、打开USB调试模式后,下拉手机通知栏,将手机上连接电脑的USB模式设置为“仅充电”模式或“媒体设备(MTP)”或“同步”模式后,即可正常连接电脑的刷机软件进行相关操作。

资讯百科 2022-04-05
csgo职业选手画质调试,csgo的准心在哪里调?

csgo职业选手画质调试,csgo的准心在哪里调?

CSgo 我们可以去创意工坊订阅准心地图csgo职业选手画质调试,找到自己满意的准心,当然还有一些其他非常实用的设置。 打开steam csgo创意工坊 1、准心地图地址:点击进入或者直接游戏中点开 创意工坊里搜索“Crosshair Generator”即可 2、打开后,点击绿色按钮 “订阅” 3、订阅后,打开CSGO游戏,就会自动下载crashz’ Crosshair Generator v2地图 4、开始游戏——与电脑玩家进行离线游戏——创意工坊——选择下载好的“crashz’ Crosshair Generator v2”——点击绿色“开始”按钮——选择“休闲模式”——点击绿色“开始”按钮 5、然后进入游戏就可以玩啦

资讯百科 2022-01-20
无障碍模式,reno5怎么调试无障碍模式?

无障碍模式,reno5怎么调试无障碍模式?

开启无障碍功能方法:1:通过桌面【设置】–【其他设置】–进入【无障碍】界面无障碍模式;开启【无障碍快捷方式】开关,后续就可以同时按住音量上下按键3秒开启无障碍功能;3:开启RalkBack功能后,想进行操作时需要先点击,然后出现绿框后再连续点击两次才能进行下一步操作,假如需要上下滑动时需要双指在屏幕滑动,左右滑动也是如此操作;4:开启无障碍菜单,在任何界面按右下角人像标志可快捷操作,比如锁定屏幕、截图、快捷设置等等;5:开启随选朗读后,只需按右下角人像标志,点击播放或者在屏幕上拖动手指选择多项内容就会自动播放屏幕上所有内容。

资讯百科 2022-01-13
win10怎么关闭实时调试

win10怎么关闭实时调试

进入internet选项,选择高级选项卡,在下方设置框内找到禁用脚本调试(InternetExplor)和禁用脚本调试(其他)两项,去掉前面复选框里的勾,点击应用后点击确认,结束操作后重启电脑即可。 win10关闭实时调试的方法 1. 打开 windows 电脑自带的 ie浏览器 (360浏览器等也可)。 2. 点击右上方的“工具”按钮,点击进入“internet选项”。在这里我们可以对一些网络功能进行设置。 3. 点击上方选项卡“高级”。在下方的“设置”框里有众多对网络及浏览器可进行设置的选项。 4. 在“设置”框内下拉找到“禁用脚本调试(InternetExplor)”和“禁用脚本调试(其他)”把前面复选框的勾去掉。 5. 点击“应用”后再点击“确认”结束操作。 6. 重启电脑即可生效。

数码家电 2021-11-06
电子秤怎么调试准确

电子秤怎么调试准确

电子调试一般可用重量法进行,即将电子秤放平开机,再按下校准按钮,放入一块完好的砝码,将电子秤的校准值调整为与砝码值相同即可。电子秤利用胡克定律或力的杠杆平衡原理测定物体质量,按其结构原理可分为机械秤、电子秤、机电结合秤。 电子秤怎么调试准确 电子秤主要由承重系统(比如秤盘、秤体)、传力转换系统(比如杠杆传力系统、传感器)和示值系统(比如刻度盘、电子显示仪表)三部分组成。 电子秤的操作程序一般包括置零键、去皮键、数字键、称量、金额累计等。置零键的作用是确保零位指示灯亮。数字键的作用是置入单价。

生活妙招 2021-11-06
感应开关的安装调试-感应开关的主要参数

感应开关的安装调试-感应开关的主要参数

感应开关的安装调试-感应开关的主要参数 感应开关的介绍 感应开关是指人体红外智能感应开关,是一种当有人从红外感应探测区域经过而自动启动的开关。人体红外感应开关的主要器件为人体热释电红外传感器。人体都有恒定的体温,一般在37度,所以会发出特定波长10UM左右的红外线,被动式红外探头就是探测人体发射的10UM左右的红外线而进行工作的。人体发射的10UM左右的红外线通过菲泥尔滤光片增强后聚集到红外感应源上。 红外感应源通常采用热释电元件,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路经检测处理后就能触发开关动作。人不离开感应范围,开关将持续接通;人离开后或在感应区域内长时间无动作,开关将自动延时关闭负载。 感应开关的安装调试 1、感应开关从外形上可分为86型感应开关和吸顶式感应开关。 2、86型感应开关与传统机械式墙壁开关大小一致,可直接替换原有的墙壁开关。 3、因开关左右两侧比上下两侧的感应范围大,所以安装开关时,应使其正轴线与人的行走通道方向尽量相垂直,这样可以达到最佳感应效果。 4、吸顶式感应开关的安装方式大同小异,以BR-306C为例。在天花上开个直径为60mm圆孔。L,N,LOUT,NOUT四个接线柱上分别接入火线进线,零线进线,火线出线和零线出线。接好线后,将开关扣入天花上即可;若安装环境中无吊顶,可先用镙丝将开关顶盒锁在顶上,再将开关旋入底盒中。 5、安装好开关后加电,当环境光线不足时,开关直接进入监控状态,人不离开且在活动,开关将持续工作。 6、安装好开关后加电,当环境光线充足时,灯泡将会闪三次,一分钟后初始化结束,开关进入监控状态,用物体遮住环境光线使开关感应工作,人不离开且在活动,开关将持续工作;人离开后,开关自动延时关闭负载。 7、若对延时时间或光感值不满意,可通过86型墙壁开关的背面“TIMER”及“DIMMER”进行调者,其中前者调延时关时间,后者调光感值。调节时用一字镙丝刀轻扭,切不可用力过猛。对于吸顶式感应开关,打开面盖即可看到调节电位器。 感应开关的主要参数 绝缘电阻: 指感应开关的导体部分与绝缘部分的电阻值,绝缘电阻值应在100MΩ以上。 耐压: 指感应开关对导体及地之间所能承受的最高电压。 寿命: 是指感应开关在正常工作条件下,能操作的次数.一般要求在5000-35000次左右。 接触电阻: 是指感应开关在开通状态下,每对触点之间的电阻值,一般要求在0.1-0.5Ω以下,此值越小越好。 额定电流: 指感应开关接通时所允许通过的最大安全电流,当超过此值时,感应开关的触点会因电流过大而烧毁。 额定电压: 是指感应开关在正常工作时所允许的安全电压,加在感应开关两端的电压大于此值,会造成两个触点之间打火击穿。

数码家电 2015-12-21 09:35:58  
< 1 >