找回密码
 注册
Simdroid-非首页
查看: 587|回复: 4

[二次开发及其理论] 请问二次开发过程中应该如何对程序进行跟踪调试?

[复制链接]
发表于 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文件里面看到打印的变量


 楼主| 发表于 2021-8-20 23:13:49 | 显示全部楼层 来自 四川绵阳
Simdroid开发平台
木有人吗?现在论坛这么冷清了嘛
回复 不支持

使用道具 举报

 楼主| 发表于 2021-8-21 00:08:37 | 显示全部楼层 来自 四川绵阳
犯了一件蠢事,我把生成的求解器搞错了,此贴终结
按照方法2可以在messag文件中看到打印的变量
回复 不支持

使用道具 举报

发表于 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)
回复 不支持

使用道具 举报

发表于 2022-5-26 19:15:21 | 显示全部楼层 来自 江苏南京
请问我按照方法2为社么messag里面找不到输出的信息呢?write前面需要加C吗?
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-1 07:58 , Processed in 0.031520 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表