当前位置: 首页 > news >正文

韩国有哪些专业做汽车的网站?福州网站建设索q479185700

韩国有哪些专业做汽车的网站?,福州网站建设索q479185700,seo怎么做?,网络优化seo招聘一#xff1a;背景 1.讲故事前几天 B 站上有位朋友让我从高级调试的角度来解读下 .NET7 新出来的 AOT#xff0c;毕竟这东西是新的#xff0c;所以这一篇我就简单摸索一下。二#xff1a;AOT 的几个问题 1. 如何在 .NET7 中开启 AOT 功能在 .NET7 中开启 AOT 非常方便…一背景 1.讲故事前几天 B 站上有位朋友让我从高级调试的角度来解读下 .NET7 新出来的 AOT毕竟这东西是新的所以这一篇我就简单摸索一下。二AOT 的几个问题 1. 如何在 .NET7 中开启 AOT 功能在 .NET7 中开启 AOT 非常方便先来段测试代码。internal class Program{static void Main(string[] args){Console.WriteLine(hello world!);Debugger.Break();}}然后在项目配置上新增 PublishAottrue/PublishAot 节点如下输出Project SdkMicrosoft.NET.SdkPropertyGroupOutputTypeExe/OutputTypeTargetFrameworknet7.0/TargetFrameworkImplicitUsingsenable/ImplicitUsingsNullableenable/NullablePublishAottrue/PublishAot/PropertyGroup /Project接下来在项目中右键选择 发布选择一个输出地这样一个 AOT 程序就完成了。2. SOS 可以调试 AOT 程序吗这是很多朋友关心的话题我们都知道 SOS 是用来撬开 CoreCLR 的只要能看到 CoreCLR.dll那 SOS 就能用接下来用 WinDbg 附加到 ConsoleApp2.exe 上使用 lm 观察。0:000 lm start             end                 module name 00007ff611680000 00007ff61196f000   ConsoleApp2 C (private pdb symbols)  C:\test\ConsoleApp2.pdb 00007ffe692b0000 00007ffe692c3000   kernel_appcore   (deferred)              00007ffe6b3e0000 00007ffe6b47d000   msvcp_win   (deferred)              00007ffe6b480000 00007ffe6b4ff000   bcryptPrimitives   (deferred)              00007ffe6b660000 00007ffe6b687000   bcrypt     (deferred)              00007ffe6b690000 00007ffe6b6b2000   win32u     (deferred)              00007ffe6b720000 00007ffe6b82a000   gdi32full   (deferred)              00007ffe6b830000 00007ffe6b930000   ucrtbase   (deferred)              00007ffe6b9e0000 00007ffe6bca7000   KERNELBASE   (deferred)              00007ffe6bcb0000 00007ffe6bd5a000   ADVAPI32   (deferred)              00007ffe6be50000 00007ffe6be7a000   GDI32      (deferred)              00007ffe6be80000 00007ffe6bf1b000   sechost    (deferred)              00007ffe6c180000 00007ffe6c2a3000   RPCRT4     (deferred)              00007ffe6c440000 00007ffe6c470000   IMM32      (deferred)              00007ffe6c600000 00007ffe6c729000   ole32      (deferred)              00007ffe6c730000 00007ffe6c7ce000   msvcrt     (deferred)              00007ffe6cc50000 00007ffe6cfa4000   combase    (deferred)              00007ffe6d160000 00007ffe6d300000   USER32     (deferred)              00007ffe6d410000 00007ffe6d4cd000   KERNEL32   (deferred)              00007ffe6dc50000 00007ffe6de44000   ntdll      (pdb symbols)          c:\mysymbols\ntdll.pdb\63E12347526A46144B98F8CF61CDED791\ntdll.pdb从上面的输出中惊讶的发现居然没有 clrjit.dll 和 coreclr.dll前者没有很好理解后者没有就很奇怪了。。。既然没看到 coreclr.dll 这个动态链接库那至少目前用 sos 肯定是无法调试的即使你强制加载也会报错。0:000 .load  C:\Users\Administrator\.dotnet\sos64\sos.dll 0:000 !t Failed to find runtime module (coreclr.dll or clr.dll or libcoreclr.so), 0x80004002 Extension commands need it in order to have something to do. For more information see https://go.microsoft.com/fwlink/?linkid2135652到这里我的个人结论是目前SOS无法对这类程序进行调试如果大家用在生产上出现各种内存暴涨CPU爆高问题就要当心了。3. AOT 真的没有 CoreCLR 吗其实仔细想一想这是不可能的C# 的出发点就是作为一门托管语言而存在再怎么发展也不会忘记这个初衷所谓不忘初心方得始终。我们回过头看下 ConsoleApp.exe 这个程序有没有发现它居然有 3M 大小。聪明的朋友应该猜到了对就是把 CoreCLR 打包到 exe 中了这个太牛了那怎么验证呢可以用 IDA 打开一下。从图中可以清晰的看到各种 gc_heap 相关的函数这也验证了为什么一个简简单单的 ConsoleApp.exe 有这么大Size的原因。4. 真的无法调试 AOT 程序吗在 Windows 平台上就没有 WinDbg 不能调试的程序所以 AOT 程序自然不在话下毕竟按托管不行大不了按非托管调试这里我们举一个 GC.Collect() 的源码调试吧。一段简单的测试代码。internal class Program{static void Main(string[] args){Debugger.Break();GC.Collect();}}下断点熟悉 GC 的朋友应该知道我只需用 bp coreclr!WKS::GCHeap::GarbageCollect 下一个断点就可以了但刚才我也说了内存中并没有 coreclr 模块下面的 x 写法肯定会报错。0:000 x coreclr!WKS::GCHeap::GarbageCollect^ Couldnt resolve x coreclr那怎么下呢先输个 k 观察下调用栈有没有什么新发现。0:000 k# Child-SP          RetAddr               Call Site 00 000000115e52f628 00007ff67f288c5a     ConsoleApp2!RhDebugBreak0x2 [D:\a\_work\1\s\src\coreclr\nativeaot\Runtime\MiscHelpers.cpp  45]  01 000000115e52f630 00007ff67f2f0e28     ConsoleApp2!S_P_CoreLib_System_Diagnostics_Debugger__Break0x3a [/_/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs  17]  02 000000115e52f6c0 00007ff67f1fe37e     ConsoleApp2!ConsoleApp2__Module___StartupCodeMain0x118 03 000000115e52f720 00007ff67f1f9540     ConsoleApp2!wmain0xae [D:\a\_work\1\s\src\coreclr\nativeaot\Bootstrap\main.cpp  205]  04 (Inline Function) ----------------     ConsoleApp2!invoke_main0x22 [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl  90]  05 000000115e52f770 00007ffe6d426fd4     ConsoleApp2!__scrt_common_main_seh0x10c [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl  288]  06 000000115e52f7b0 00007ffe6dc9cec1     KERNEL32!BaseThreadInitThunk0x14 07 000000115e52f7e0 0000000000000000     ntdll!RtlUserThreadStart0x21我去,int 3 函数也换了成了 ConsoleApp2!RhDebugBreak0x2不过也能看出来应该将 coreclr 改成 ConsoleApp2 即可输出如下0:000 bp ConsoleApp2!WKS::GCHeap::GarbageCollect breakpoint 0 redefined 0:000 g Breakpoint 0 hit ConsoleApp2!WKS::GCHeap::GarbageCollect: 00007ff67f1a9410 48894c2408      mov     qword ptr [rsp8],rcx ss:000000115e52f5f00000000000000000源码也看的清清楚楚路径也是在 gc 目录下。如下图所示4. AOT 的实现源码在哪里观察刚才的线程栈中的 D:\a\_work\1\s\src\coreclr\nativeaot\Bootstrap\main.cpp 可以发现新增了一个名为 nativeaot 的目录这在 .NET 6 的 coreclr 源码中是没有的。如果有感兴趣的朋友可以研究下源码。三总结 总的来说AOT 目前还是一个雏形阶段大家慎用吧一旦出了问题可不好事后调试哦希望后续加强对 SOS 的支持。
http://www.zqtcl.cn/news/854266/

相关文章:

  • 网站建设vps个人如何做网站推广
  • 小语种网站怎么设计网页制作公司 大连
  • 贵港市城乡住房建设厅网站菜鸟教程网站
  • 广州网站建设找哪家免费搭建网站的软件
  • 培训班管理系统 免费太原优化网站排名
  • 上海怎么做网站网站让图片充满屏幕怎么做
  • 哈尔滨营销网站建设wordpress 加载图片不显示
  • 电商网站功能结构图网站做中秋专题怎么弄
  • 深圳专业建站平台陕西省建设工程质量安全监督总站网站
  • 制作网页的网站的软件是用户反馈数据分析软件园
  • 南京 做网站seo查询网站
  • 卖高仿名牌手表网站共享wifi小程序搭建
  • c#网站开发模板想在意大利做购物网站
  • 2015做那些网站能致富60天做网站
  • 沈阳个人建站模板网站图片计时器怎么做
  • 福州定制网站开发北京排名seo
  • 地方门户网站开发方案长沙有哪个学校可以学网站建设
  • 建个购物网站水果建设网站前的市场分析
  • 建网站的目的小程序登录代码
  • 南京有名的网站建设公司自学室内装修设计教程
  • 新乡市做网站的公司开发公司简介企业介绍
  • 礼品网站模板淘宝店铺购买交易平台
  • 属于公司的网站怎么做外贸服装网站开发
  • 做暧网站泸州公司做网站
  • 做文库类网站网站所有权 备案
  • 网站开发主要内容站长之家网站查询
  • 网站推广优化排名公司wordpress添加说说
  • 维护一个网站要多少钱企业怎么做网站
  • 怎么做兼职网站成都必去十大网红景点
  • 网站建设如何传视频教程电脑网站设计公司