|
ug二次开发的程序多是dll,调试的时候要启动UG主进程。以前实在属性的命令里指定UG的exe,但是调试退出UG也退出了,十分的不便。启动UG好慢啊!所以,研究了一下如何在调试完的时候能够不关闭UG。1 r$ I' x' ]+ T. m3 c9 L
大体来说,思路是将开发的dll注入UG的进程空间,而不是主动的启动UG主进程,这样调试完就可以卸载而不会关闭主进程。9 ]6 c9 e% {5 i* r c, c4 |
注入进程的调试方式有两种,后面细说。首先说两点准备,第一,加载是手动,卸载方式要是立即的(C)或者手动(C++),不要让dll在UG结束的时候才能卸载。第二,要用异常捕获,或者之类的办法,否则出现错误,很可能将进程杀死。当然UG做的还不错啦,就算出错,一般也不会退出。0 F3 p6 ?. L" X/ h% I x5 N% d
另外说明一点,本文是针对internal模式的,语言是C或者C++,其实用.net也一样,我就不赘述了。有空再将.net开发。
( G# s3 w m3 M2 D正文开始:2 h* Y' g9 _8 l1 x( m" u
一、UG NX4,在调试时注入方式。NX4只能是这种,NX5可以在属性里设置另一种。NX4使用的是VS2003# i. a/ l; h" y- {! d
1,在程序中设置断点,编译模式debug* V' p$ [0 d1 C& b1 ?; w
2,设置卸载方式,前面已说0 b* R, w; @# _3 _8 {
3,启动UG,或者UG正在运行, B) Q% m3 B* ~/ e) T3 k- a4 L" z
4,在VS2003中找到【调试】菜单,选择【进程】
) s1 l$ _& Y' b! E% \2 `! g5,选择进程ugraf.exe,点击【附加】
7 `8 Q' U- P+ {; n( ?, I) Z6,勾选“Native”程序类型,多说一句,.net程序选择CLR类型, _0 Y+ s$ n, A8 X$ I" k& r
7,在VS中启动调试,然后在UG中加载dll,& g/ n# b! t" u* }' T4 m2 m' _7 f$ M
8,打开VS2003调试
5 J. _1 M& {# L5 v9 I9,调试完选择【调试】菜单中的【全部分离】或者【停止调试】,两者的区别自己研究。/ ]& y5 c* [8 E7 R& m7 e3 i
10,最后别忘了,如果设置手工卸载,还要在UG中卸载dll
5 |1 G/ R% R4 g% D. Y9 A1 N1 w# O8 m) Z( a二、UG NX5,VS2005.采用project 属性中设置的方式。当然也可以同上。. t7 } }1 y" R5 h- }6 C" z
1,在程序中设置断点,编译模式debug
1 z, L* O# H! P( p3 Y* p. {' Z2,设置卸载方式,前面已说+ Q6 C4 r# o/ E
3,启动UG,或者UG正在运行
( t) M2 U* u; L0 J r4,在VS2005中设置project属性页,* Y0 @. D0 R& J) _9 j0 J/ N
5,在【configuration property】中的“Debugging”中,指定command为你的ugraf.exe,当然包括路径) p3 D* ^8 |- V a& Y; p
同时选择“attach”为Yes.另外,.net程序也是如此。
% B7 O5 q( Z. {, m6,启动调试调试
1 C# _0 k$ a; C) U5 B9 _* c" a7,在UG中加载dll,4 f6 ]0 m. N* r* b* ~
8,打开VS2003可以调试了) b1 S* K5 M ]; ?) L
9,调试完选择【调试】菜单中的【全部分离】或者【停止调试】,两者的区别自己研究。; h' ^, a4 C9 N( M: {7 C3 J8 Q- B" b
10,最后别忘了,如果设置手工卸载,还要在UG中卸载dll+ D& @: x @6 J/ X1 w! ^
说的够清楚了吧。本来有抓图的,但是各位可能也知道CSDN上传图片很痛苦的。
6 }0 N- }+ d$ ~* |1 Y( C有问题回帖。 |
|