Aaronzxh 发表于 2021-8-17 21:21:49

请问二次开发过程中应该如何对程序进行跟踪调试?

本帖最后由 Aaronzxh 于 2021-8-21 00:23 编辑

小弟最近在进行UMAT二次开发相关工作,想对umat程序中的某些变量进行跟踪调试,如像ABAQUS子程序那样材料write()的方式将变量打印出来,但是我在dyna里却总是实现不了。根据论坛里面的相关资料及问答,总结了以下办法,但是均未实现变量打印。不知道哪里出问题了。盼望高手解答!

1、在用户子程序开发过程中,经常需要对源程序进行跟踪和调试。用户只需将Makefile中的MY_FLAG变量里的优化选项“-O2”改为“-g”,就可以关掉编译器的优化功能并在动态连接库中加入源程序信息,方便对源码调试。调试MPP版本的LS-DYNA,用户避免MPIRUN启动多进程,而是直接启用gdb(或者其它的跟踪程序,如idb,ddd等)加载主程序,并在用户子程序中设置断点。
注:这个方法我没找到相关文件,不知道是不是说的lib包里的makefile文件,但是我没在这个包里找到所说的MY_FLAG变量。

2、A..:: CAE专区 ::..-二次开发的调试,请教write(59,*) 参数,参数 这个语句的意思,{Simwe仿真论坛(forum.simwe.com),CAE/CAD/CAM/,FEA/FEM/有限元分析论坛-(手机验证注册)} - Powered by Discuz!参照以上帖子,在UMAT中输入write(59,*)的打印命令,想把变量打印至messag文件中,但是也失败了,messag文件中没有输出。

3、A..:: CAE专区 ::..-关于ZWT粘弹性本构二次开发的问题,{Simwe仿真论坛(forum.simwe.com),CAE/CAD/CAM/,FEA/FEM/有限元分析论坛-(手机验证注册)} - Powered by Discuz!这个帖子里,zdsimwe大神说:编译的时候加上-g,运行lsdyna,不要给参数,然后用 vs 或 gdb 把进程调入,设置断点。再给参数就继续就可以了。但是我完全看不懂。

请问各位知不知道相关调试打印方式??请多多交流,谢谢啦!


更新:此贴终结!犯了个白痴错误,按照方法2就能在messag文件里面看到打印的变量


Aaronzxh 发表于 2021-8-20 23:13:49

木有人吗?现在论坛这么冷清了嘛

Aaronzxh 发表于 2021-8-21 00:08:37

犯了一件蠢事,我把生成的求解器搞错了,此贴终结:L
按照方法2可以在messag文件中看到打印的变量

xwteamobj007 发表于 2021-9-5 23:07:12

在第一个语句前加上include 'iounits.inc',然后就可以用write输出了,message文件的unit是iomsg,例如
write(iomsg, *) ''
write(iomsg,20) 'ncycle',ncycle
。。。。。
20 format(x,a10,i16)

daiwei47 发表于 2022-5-26 19:15:21

请问我按照方法2为社么messag里面找不到输出的信息呢?write前面需要加C吗?
页: [1]
查看完整版本: 请问二次开发过程中应该如何对程序进行跟踪调试?