zoukankan      html  css  js  c++  java
  • 如何在VxWorks下为TAU G2的程序设置断点

    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,但是有的时候线程名会显示为乱码。

  • 相关阅读:
    泛型理解及应用(二):使用泛型编写通用型Dao层
    泛型的理解及应用(一):泛型擦除
    Servlet、Filter 生命周期
    Java多线程(六) 线程系列总结
    Java多线程(五) Lock接口,ReentranctLock,ReentrantReadWriteLock
    Java多线程(四) 线程池
    Java多线程(三) 多线程间的基本通信
    Java多线程(二) 多线程的锁机制
    Java多线程(一) 多线程的基本使用
    Spring Boot实战:模板引擎
  • 原文地址:https://www.cnblogs.com/zealsoft/p/1310415.html
Copyright © 2011-2022 走看看