|
ug二次开发的程序多是dll,调试的时候要启动UG主进程。以前实在属性的命令里指定UG的exe,但是调试退出UG也退出了,十分的不便。启动UG好慢啊!所以,研究了一下如何在调试完的时候能够不关闭UG。8 M9 s* v. M; m1 m- X0 O( u; l+ I
大体来说,思路是将开发的dll注入UG的进程空间,而不是主动的启动UG主进程,这样调试完就可以卸载而不会关闭主进程。& T, J* Z$ h% P( W1 t' n7 Z
注入进程的调试方式有两种,后面细说。首先说两点准备,第一,加载是手动,卸载方式要是立即的(C)或者手动(C++),不要让dll在UG结束的时候才能卸载。第二,要用异常捕获,或者之类的办法,否则出现错误,很可能将进程杀死。当然UG做的还不错啦,就算出错,一般也不会退出。8 \. N0 w) h- ~7 U$ q z" f
另外说明一点,本文是针对internal模式的,语言是C或者C++,其实用.net也一样,我就不赘述了。有空再将.net开发。& j- O- f! r" `* ~# C
正文开始:0 z4 {& [3 c/ Z, w* G9 V( ^
一、UG NX4,在调试时注入方式。NX4只能是这种,NX5可以在属性里设置另一种。NX4使用的是VS2003 Z( u8 H( l6 K; t( U
1,在程序中设置断点,编译模式debug# j9 }8 `% ?7 ?. t" H
2,设置卸载方式,前面已说! `/ {" ]+ v' o9 s2 y* v* J
3,启动UG,或者UG正在运行
P8 F( ? ^/ [: t7 |7 t& }4,在VS2003中找到【调试】菜单,选择【进程】
% j+ i6 e4 b9 d$ \7 y! p5,选择进程ugraf.exe,点击【附加】
$ q* t# \4 s" s; B% L& f$ z0 z6,勾选“Native”程序类型,多说一句,.net程序选择CLR类型
# i8 y$ u* K6 x! f( h( i. {' L7,在VS中启动调试,然后在UG中加载dll,1 } R9 t# a. H0 r& b3 v
8,打开VS2003调试" }& U( c9 ]; I5 {
9,调试完选择【调试】菜单中的【全部分离】或者【停止调试】,两者的区别自己研究。
d0 |7 C7 C) f+ e' F3 |10,最后别忘了,如果设置手工卸载,还要在UG中卸载dll% p: E8 ]1 M. i6 ~2 W" z3 j
二、UG NX5,VS2005.采用project 属性中设置的方式。当然也可以同上。
: _2 q5 E: W& d; o. e1,在程序中设置断点,编译模式debug
1 m v6 z1 n- p# ]. p3 W2,设置卸载方式,前面已说
x% I# h( u6 z) y2 \3,启动UG,或者UG正在运行
' a, E3 W ~! c4 X4,在VS2005中设置project属性页,8 X$ N' ^* ^, o. z- u1 K
5,在【configuration property】中的“Debugging”中,指定command为你的ugraf.exe,当然包括路径# s, v0 x- ~+ K5 \
同时选择“attach”为Yes.另外,.net程序也是如此。$ T; L# s! L" }+ o- C+ m
6,启动调试调试
0 u/ X9 e7 K O% s7,在UG中加载dll,
7 H1 {4 i* [& k1 _0 H( Y% t/ t1 x8,打开VS2003可以调试了4 P6 z5 Q' u' B. e4 Y3 A0 H: K
9,调试完选择【调试】菜单中的【全部分离】或者【停止调试】,两者的区别自己研究。
; e, e0 c. w+ D! i8 H# Z1 p5 \8 `# L B10,最后别忘了,如果设置手工卸载,还要在UG中卸载dll, M7 ]& y% [% C; K' |
说的够清楚了吧。本来有抓图的,但是各位可能也知道CSDN上传图片很痛苦的。
: y7 L3 Q0 q$ |( U5 D有问题回帖。 |
|