如何使用 CodeXL 分析 OpenTK C# 应用程序?

Posted

技术标签:

【中文标题】如何使用 CodeXL 分析 OpenTK C# 应用程序?【英文标题】:How to profile OpenTK C# application with CodeXL? 【发布时间】:2014-09-21 19:51:51 【问题描述】:

我想从 gDEBugger 切换到 CodeXL,因为 CodeXL 是 gdeb 的继承者,甚至还集成了 Visual Studio。

但是,对我来说,集成存在一些问题。我正在使用最新的 CodeXL 版本 VS2013,并针对 .NET 4.5 进行编译。

它从 obj 文件夹而不是 bin 文件夹启动可执行文件。因此,如果我启动 CodeXL 调试,它不会找到我的引擎 DLL 或与输出一起复制的任何其他内容,因为它们位于 bin 文件夹中。我通过手动复制那里的文件来解决这个问题,但如果你问我,这是一个相当肮脏的解决方案。 我不知道如何使用 CodeXL 记录 CodeXL 冗余状态更改,我主要使用 gDEBugger 来做这件事。我只能在 CodeXL“调试模式”中启动我的项目,但这个不会记录冗余状态更改。如果我切换到所需的“分析模式”,我根本得不到任何统计数据,甚至无法启动应用程序,按钮和统计视图都被禁用。

有人成功地将 CodeXL 与 OpenTK 结合使用,并且可以告诉我如何继续吗?归结为以下两个问题:

如何更改可执行路径以纠正obj bin文件夹问题? 如何记录 OpenGL 应用程序的冗余状态变化?

【问题讨论】:

我没有使用 CodeXL,但要解决路径问题,您只需将目标 (bin) 和中间 (obj) 输出路径指向项目属性中的相同位置。跨度> 我想过,但后来我将两个文件夹合二为一,不再有干净的 bin 输出。 【参考方案1】:

这不是一个完美的解决方案,但可以确保每次在“obj”文件夹中构建时都有最新的文件,您可以进入项目属性并在“构建事件”下设置“构建后事件命令行” :" 到:

copy "$(SolutionDir)\YourProjectName\bin\Debug" "$(ProjectDir)\obj\Debug"

当然,假设您的活动构建设置为“调试”,并将您的“YourProjectName”替换为您的项目名称:-)

【讨论】:

是的,这就是我现在正在做的事情,还有一些占位符可以自动输出路径。这是一个非常肮脏的解决方案。也仍然不知道如何真正分析冗余呼叫。无论如何,我都会给你赏金,所以它不会丢失,你可以需要它;D

以上是关于如何使用 CodeXL 分析 OpenTK C# 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

C# SkiaSharp OpenTK Winform - 如何从后台线程中绘制?

C# OpenTK - 不渲染的简单示例

vTextCoord 值不起作用 - c# OPENTK

OpenTK (OpenGL) 正确使用 BufferData 和 BufferSubData

OpenTK 按键?

c# 将变量传递给类