TAU G2程序本身的仿真功能很强,如果程序在目标机上运行时出现逻辑错误,你总是可以在TAU G2的仿真环境下模拟出这个错误并找到出错的原因,一般不需要借助操作系统的C代码调试工具。但是如果是在TAU G2中调用了C语言的函数,或者在环境函数中出现错误,问题就复杂了,因为TAU G2的仿真环境无法跟踪这些C语言的代码,你只能借助操作系统自身的调试功能了。
TAU G2生成的程序至少是2个线程:一个是主线程,就是main函数所在的线程,象环境函数中的xInitEnv和xInEnv都是在主线程中的,主线程设置断点很容易,只要在启动调试器后,使用Debug菜单中的Toggle Breakpoint(F9)就可以了,因为调试器默认就是把主线程当作当前线程的;另一个线程是UML代码所在的线程,通常你不需要在生成的UML代码中设置断点,但是xOutEnv在这个线程中,而且如果在UML代码中调用了C语言的函数,那么这些C语言的函数也在这个线程中,而在这个线程中如果还是用F9直接设置断点就往往不会成功了,程序往往不会停下来而是继续执行。
要想在xOutEnv或者自己编写的C语言函数中设置断点进行调试,可以使用Debug菜单中的Toggle Global Breakpoint(Shift F9)设置全局断点。设置全局断点后,当UML代码所在的线程执行到断点处,这个线程就会停下来,此时可以使用Debug菜单中的Attach功能,将当前线程由主线程变为UML线程,这样就可以单步跟踪调试了。UML线程在Attach对话框中通常是最后一个线程,默认情况下其名字应该为t1,但是有的时候线程名会显示为乱码。