运行 来自命令行的 dotMemory

Running dotMemory from Command Line

有没有办法直接从带参数的命令行 运行 dotMemory?我同时使用了 dotCover 和 dotTrace,它们有非常不同的实现来实现这一点(dotCover 直接来自命令行,而 dotTrace 需要生成的 xml 配置)。我看过 dotMemoryUnit,但它似乎不接受额外的参数,我也没有找到有关如何执行此操作的任何其他信息。

点内存单元

如果您运行测试过,dotMemory Unit可能更适合您的需要。 运行 dotMemoryUnit.exe -targetExecutable="your application which run tests" 并且您的应用程序将在探查器下启动。有关 doMemoryUnit.exe 命令行参数的更多详细信息,您可以在 here 中找到。

在你的测试中你可以调用dotMemoryApi.SaveCollectedData方法,它会保存一个包含一个测试的所有数据的工作区,但如果没有内存则不会保存任何东西已获取快照。

独立点内存

dotMemory 有一个解决方法。如果你 运行 dotMemory.exe /p:path_to_xml_configuration.xml 它将自动启动并 运行 分析。 注意:dotMemory 将删除/p 键中传递的文件,因此请复制它。 您熟悉 dotTrace xml 配置,因此您需要创建几乎相同的配置但替换

<Info type="PerformanceInfo"> 

节点与这个

<Info type="MemoryInfo">
  <CollectAllocations>...</CollectAllocations>
</Info>

CollectAllocations 值可以被 EnabledPostponed - dotMemory 不会立即开始收集分配数据,但稍后可以手动或通过分析 API 将其打开。或者 EnabledImmediatly(是的,有拼写错误)- 如果 运行 在手动(而不是 Profiling API)模式下,将从头开始收集分配数据。

[编辑]

dotMemory 命令行工具

新的免费工具允许使用命令行获取快照

dotMemory.exe get-snapshot MyApp --save-to-dir=C:\Snapshots

阅读此博客 post 了解详细信息 https://blog.jetbrains.com/dotnet/2017/05/16/dotmemory-command-line-tools/