VisualGDB可以直接运行在Microsoft visual studio中,它主要通过GDB程序来辅助调试程序的开发,在设计的时候,VisualGDB可以帮助用户分析出现的性能,通过采样分析直接在stm32版上运行,从而分析嵌入式应用程序的性能,帮助用户调试与检测嵌入式应用程序的各种基本数据,查看设计的数据是否准确,检验程序的可以执行性能;VisualGDB可以执行的功能非常丰富,它可以跟踪优化一个简单的FreeRTOS UART驱动程序、可以分析USB设备的性能、可以创建多个项目等,需要的朋友可以下载试试!

软件功能
VisualGDB嵌入式项目向导开始创建新的嵌入式项目
开始分析性能。选择分析 - >使用VisualGDB分析性能(在VS2005-2008中,该命令将改为在调试菜单中)
VisualGDB将建议安装和引用嵌入式分析框架
InitializeSamplingProfiler()不会做任何事情,除非你明确地使用相应的命令开始分析。因此,即使不进行分析,也可以将其保存在代码中。
VisualGDB将显示你的源代码中占用最多时间的特定行
采样分析器通过配置一个硬件定时器来触发周期性中断。在每个中断处,它快速确定当前执行的代码行,并在堆栈中搜索关于先前帧的线索。然后它压缩此信息并存储在内部缓冲区中,稍后由调试器读取,而不停止程序。速率自动调整以最小化缓冲区溢出
选择一个远程计算机来构建项目。您可能需要为其创建一个新的SSH连接
VisualGDB将尝试验证远程机器是否具有所需的所有工具
软件特色
VisualGDB将为您创建一个新的Visual Studio项目。按Ctrl-Shift-B构建它。您将看到如何在后台调用clang
可以使用反汇编视图以查看源代码和相应的反汇编转储
可以轻松地通过编辑修改编译器标志flags.mak文件
VisualGDB将自动测试你的工具链
最后一个向导页面允许自定义源文件在Windows和Linux计算机之间传输的方式
VisualGDB会建议共享包含项目文件夹的文件夹之一。在这个例子中,项目驻留在C:项目 RotateDemo和我们将分享C:项目。要让Linux计算机访问您的共享文件夹
VisualGDB将允许您选择要映射文件夹的安装点。在这个例子中,我们使用/ opt / VisualGDB-projects
VisualGDB将创建一个“Hello,World”项目
Linux计算机将能够自动访问来自Windows项目目录的所有文件,并将文件写入它。创建一个名为ArrowRight.png在项目目录
VisualGDB将把目录添加到IntelliSense搜索路径。如果最近安装了其他库,单击“编辑远程缓存”
使用方法
通过将gdb 7.2a创建的补丁应用到gdb 7.4(因为没有向后兼容性而获得崩溃的可执行文件),使用VisualGDB调试崩溃,定位问题并解决问题,我们将展示几种调试技术。
虽然在这个例子中演示的特定情况(将旧的补丁应用于GDB)很少见,但教程显示了使用GDB与Visual Studio实现的各种强大的调试技术。
要一步步再现本教程中描述的步骤,请按照下列步骤操作:
1.下载并安装MinGW的,和VIsualGDB。
2.下载GDB 7.4到C: MSPGCC建造并启动MinGW的外壳。
3.运行以下命令解压GDB源:
cd / c / mspgcc-build
tar xjf gdb-7.4.tar.bz2
4.下载GDB的7.2A MSP430补丁到C: MSPGCC的构建。
5.应用修补程序。该修补程序增加了对MSP430处理器系列的支持。
cd gdb-7.4
patch -p1 <../msp430-gdb-7.2a-20111205.patch
6.创建一个构建目录并为MSP430目标配置GDB:
cd ..
mkdir gdb-build
cd gdb-build
../gdb-7.4/configure --target msp430 --prefix / c / mspgcc
7.构建GDB:
make -j16

8.重现GDB崩溃。加载一个简单的ELF文件到模拟器,设置断点并运行它。你可以下载一个示例MSP430 ELF文件在这里。
gdb / gdb LEDBlink.elf
一旦GDB启动,请执行以下命令:
目标模拟
加载
b主
跑
一旦在main()中的断点被命中,GDB将崩溃:

9、为了分析VisualGDB的问题,我们将创建一个Visual Studio项目来构建和调试它。启动Visual Studio,选择File-> New-> Project:

10.在项目类型选择屏幕中,请选择“A Windows应用程序”。

11.在下一个屏幕上,选择“导入现有项目”并指定gdb-build文件夹的位置。您指定的文件夹应包含Makefile。不要使用GDB源指定文件夹。

12.确保“GNU make”选项已自动激活。如果没有,你指定了一个错误的目录(不包含Makefile)。
13.下一个屏幕允许选择工具链。通常,应保留默认设置。

14.此时,您可以将所有GDB源文件导入Visual Studio项目。这将使它们从解决方案资源管理器可用,并将它们导入IntelliSense。但是,导入1000个GDB源文件可能需要10分钟以上。因此,建议此时跳过导入:

15.由于您不使用远程构建,请在文件映射页面上保留默认值:

16.当我们手动重现错误,我们就开始“ GDB / GDB ledblink.elf ”从C: MSPGCC建造 GDB-构建目录。现在我们需要告诉VisualGDB自动启动这个命令:

17.向导完成后,将创建一个空项目。通过选择开始调试调试- >开始使用gdb调试。

18. VisualGDB将使用MinGW的GDB来为MSP430平台调试我们新构建的GDB。
19.要重现错误,请输入导致错误的命令:
目标模拟
加载
b主
跑

20. Visual Studio将报告捕获的SIGSEGV:

21.按“break”。Visual Studio将在源代码中显示错误的位置:

22.通过在将鼠标嗅探器,我们可以看到,它的价值是零。要看到它从何而来,将鼠标悬停在开卷。让我们来检索有关地址的详细信息开卷从GDB。双击值弹出框,选择地址,然后按Ctrl + C将其复制到剪贴板。

23.打开GDB控制台窗口中输入“ 信息符号<空格> ”,然后按Ctrl + V粘贴地址。按Enter键执行命令。

24.地址实际上对应msp430_epilogue_frame_unwind象征。复制它并粘贴到观察窗口,方法是选择它并按Ctrl + V。

看起来像NORMAL_FRAME之后的字段值不对应于字段名称。如msp430_epilogue_sframe_this_id被分配给stop_reason代替this_id,等等。
26.搜索在GCC目录中的源文件msp430_epilogue_frame_unwind。打开MSP430的tdep.c包含定义文件。

27.看来,在某些时候一个新成员加入到frame_unwind结构的第一个之后,打破与先前的补丁的兼容性。要对此进行检查,请打开AVR-tdep.c文件,然后搜索类似的定义:

28.貌似stop_reason加入构件,因此具有被初始化。将成员初始化从AVR代码复制到两个结构。完成后,按Ctrl + Shift + B构建项目。

29.如果发生任何错误,GCC将报告它们,Visual Studio将在错误列表中显示它们。然后可以按F8自动跳转到第一个错误,以此类推。
30.选择调试- >开始用gdb调试,并尝试重现该问题:

31.你可以看到,更新frame_unwind初始化解决了这个问题。
∨ 展开