概述
实现了用VS2010对Fluent19.0 UDF进行断点调试,具体实现如下功能:
(1)可以查看各线程局部变量以及主程序传入的指针指向的全局变量。
(2)可以设置断点并单步操作。
贴图为证:

具体实施步骤
1.修改makefile_nt.udf至Debug模式
makefile_nt.udf的功能是配置所有编译属性,在使用fluent内置的编译器(实质上是初次配置UDF(一般是Visual Studio系列)时设置的编译器,下面的所有工作推荐在当时设置这个编译器的VS版本上进行)时,这个文件会从上述地址被复制到所生成的udf文件夹中。
makefile_nt.udf默认为发布模式,该模式下不会生成调试时需要的符号文件(.pdb文件),另外会在编译时会对源代码进行简化。需要对这个文件进行修改。
从地址D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\udf(这是你安装Fluent的地址,我的在D盘)以文本形式打开makefile_nt.udf。

需要在这里对该文件进行两处修改(可以根据行号或者Ctrl+F查找):

在变量CFLAGS后增加" /DDEBUG /Zi /Od",其中DDEBUG表示用debug模式编译,Zi表示生成.pdb(符号)文件,Od表示不进行代码简化。

在link句中增加" /DEBUG /PDB:$(TARGET_NAME).pdb "(和原文件比一下就知道加在哪了),这里将生成的.pdb文件和最终生成的.dll库函数文件(UDF)链接起来。
2.通过Fluent内置的编译器编译生成UDF文件,并hook到主程序中
这步比较常规,如果不会可以求助互联网。
上一步修改成功之后,在生成的udf文件夹(一般和项目输入文件.cas文件在一个目录下)中能够找到两个.pdb文件。

如果是并行计算,会生成两个文件夹(如三维双精度并行计算时生成3ddp_host,3ddp_node两个文件夹,分别对应主节点和计算节点),其中每个文件夹各有两个.pdb文件。
3.使用Visual Studio Debugger附加进程到Fluent
(1)打开源文件并设置断点
打开Visual Studio,“文件-打开-文件”,打开上一步中生成的文件夹,从src中找到您编写的UDF源文件,一般是.c/.cpp文件。
为程序添加断点(确保您的UDF会被调用,断点位置语句会被执行),如下图所示:

(2)附加进程到Fluent
开启Fluent的时候Console会告知进程号,如下图PID:

使用VS的“调试-附加到进程”,将上面查询到的进程附加上:

在输出页面确认.pdb(符号)文件已经加载:

如果是并行计算,能够找到两个类似的语句。下面显示三个“已退出”指本例附加的三个线程,退出指当前没有计算活动。
4.在Fluent中开始计算
在Fluent中点开始计算(Calculate),等程序跑到断点即可进入调试。调试方法(单步执行等)和变量追踪都和常规调试一致。具体效果见概论图。
总结
因为在网上没有找到现成的Debug方法,就自己整了一套。感谢chatGPT的技术指导。放出来和大家分享,希望能够简化大家的劳动~
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删