【问题标题】:No native code debugging in CoreCLR console application projects in VS2015?VS2015 CoreCLR控制台应用项目中没有原生代码调试?
【发布时间】:2015-07-22 09:02:17
【问题描述】:

我真的很想跳过 CoreCLR。新的项目结构、nuget 并入构建系统、文件系统报告更改时自动刷新解决方案以及针对多个平台的目标只是我想从旧的 csproj/.net 继续前进的一些原因4.x 的东西。

我的一个主要用例是使用 C# 探索多平台游戏引擎设计,但涉及到一些针对特定平台的互操作(在我的案例中隐藏在 SharpDX 中) - 来自 DirectX 非托管端的调试消息从本机冒泡如果您在项目的调试选项中“启用本机代码调试”,则将代码转换为托管代码。 CoreCLR 项目在项目的调试设置中没有该选项,这意味着没有有用的调试消息,这意味着调试 DirectX 调用是一场噩梦。

我希望能深入了解这方面的情况。

【问题讨论】:

  • 加入 CoreCLR 潮流只有一个很好的理由,您可以在 Linux 或 OSX 机器上运行您的程序。 DirectX 在这样的机器上,呵呵,奇迹可以发生,但现在这是一个很大的不。原生调试也有同样的问题,这样的调试器对操作系统的依赖很重。这可能真的有一天会发生。不过不要屏住呼吸,你会先变蓝的。
  • @HansPassant DirectX 的东西是用于我的代码的 Windows 分发(我自然不会认为我可以在其他地方进行这项工作!)。我不同意跨平台原因是加入潮流的唯一原因。那么可爱的全新统一的 JSON 化项目结构呢?还是VS2015中的自动刷新项目?还是通过 dnvm 进行漂亮的干净平台管理?只是……一切都变得更好了!感觉就像是在开玩笑,所有这些东西都应该只用于特定的用例,以及我们应该坚持使用旧的硬壳 XML 的遗留物......

标签: .net debugging visual-studio-2015 coreclr


【解决方案1】:

从 VS 运行时,该工具不支持本机调试。但是,如果您手动将调试器附加到进程,请同时选择本机和 CoreClr(该选项在 Debug -> Attach to Process 中),您将实现您想要的。

如果您使用的是dnx,那么您可以在应用启动时传递--debug 标志,类似于:

dnx --debug . run <args>

它会等待本地调试器被附加。

PS:警告:如果您通过--debug,您必须附加本机调试器。您不能只附加托管的。

【讨论】:

  • 谢谢,正是我需要的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多