首页 > 其他分享 >GDB调试之捕获点的使用(十)

GDB调试之捕获点的使用(十)

时间:2024-01-14 23:55:26浏览次数:38  
标签:int 捕获 GDB num catch include event 调试

一、什么是捕获点

捕获点是一个特殊的断点,命令语法为:catch event,即捕获到event这个事件的时候,程序就会中断下来。

测试代码示例如下:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <iostream>
#include <cstring>
#include <thread>
using namespace std;
int test_fun(int num)
{
     		
	if(num ==0)
		throw "num is 0";
	int x = 100 / num;
	cout << x << endl;
	return x;
}
void test_file()
{
	int fd = open("main.d",O_RDWR);
	if(fd != 0)
	{
		close(fd);
	}
}

int main(int argc,char** argv)
{
	test_file();
	try
	{
		test_fun(0);
	}
	catch(const char* error_msg)
	{
		cout << error_msg << endl;
	}
	test_file();
	return 0;
}

 二、捕获常见异常

catch捕获throw异常:  

catch捕获catch异常:

捕系统调用:

标签:int,捕获,GDB,num,catch,include,event,调试
From: https://www.cnblogs.com/TechNomad/p/17964483

相关文章

  • 反沙箱和反调试总结
    反沙箱与反调试反沙箱我们要反沙箱,就要思考沙箱和真实物理机的区别,比如说内存大小、用户名、cpu核心数等等,下面会逐个进行介绍。1.sleep沙箱在执行样本的时候肯定是有时间限制的,所以我们可以先让我们的程序睡眠一段时间再执行,这样在沙箱的环境下,我们的程序还在sleep呢,沙箱就检......
  • 芯片调试总结
    在调试的过程中,尽量选择最低的编译器优化选项,这样就可以比较直观的观察到整个程序的运行状态ICE(onchipInCircuitsEmulation):将在线仿真器的相关硬件逻辑直接集成在处理器芯片内部,在线仿真器监测CPU的所有输入输出信号,从而实现调试器的断点和跟踪trace功能断点调试和跟踪......
  • GDB调试之观察点的使用(九)
    一、什么是观察点?观察点是一个特殊的断点,当表达式的值发生变化时,它将中断下来。表达式可以是一个变量的值,也可以包含由运算符组合的一个或多个变量的值,例如'a+b'。有时被称为数据断点(VC里面就称之为数据断点)。二、观察点常用命令watch:写观察点rwatch:读观察点awtach:读写断......
  • GDB调试之函数调用栈管理(八)
    栈帧:当程序进行函数调用的时候,比如说在哪里调用,这些信息我们称之为栈帧。每一个栈帧的内容包括调用的参数,局部变量,寄存器等这些信息,这就是一个栈帧。调用栈:所有栈帧组成的信息称之为调用栈,或者我们也可以称之为调用堆栈。栈的特性是后进先出,函数调用也是这样,如果函数1里面调用了......
  • 05_OLED调试工具
    OLED调试工具OLED简介调试方式硬件电路OLED驱动函数OLED接线图OLED代码OLED.c#include"stm32f10x.h"#include"OLED_Font.h"/*引脚配置*/#defineOLED_W_SCL(x) GPIO_WriteBit(GPIOB,GPIO_Pin_8,(BitAction)(x))#defineOLED_W_SDA(x) GPIO_WriteBit(GPIOB......
  • 如何让Visual Studio Tools for Unity插件用于调试你自己的Mono嵌入应用程序
       最近在测试将mono嵌入到C++应用程序中,苦于没有调试器,有时候还是不怎么方便。网上搜了一下,有VS插件MDebug、VSMonoDebugger,实际试用了一下,有点麻烦,而且似乎对Windows+VisualStudio2022支持不大好。因此想到了,Unity引擎是基于mono的,VisualStudio2022也内置了针对Unity的......
  • GDB调试程序 [补档-2023-07-19]
    gdb调试​它是gcc的调试工具,调试工具都能干什么就不多说了。7-1生成调试信息​在使用gcc编译c/c++的程序时,需要在编译命令中加入-g这一参数,它可以为你显示函数名,变量名等待。例如:gcc-gtest.c-otest​7-2启动gdb调试信息​启动指令:gdb可执行程序......
  • GDB调试之源代码查看与管理(六)
    一、源代码管理命令显示源代码:listorl,默认显示10行(在当前行往后5行,以及往前5行,总共10行代码)设置每次显示的行数:setlistsizexx查看指定函数代码:listtest_fun查看指定文件指定行代码:listmain.cpp:15显示源代码:查看指定函数代码:查看指定文件指定行代码:设置每次......
  • 函数计算域名调试web应用
    函数计算域名调试web应用如果没有域名的话,可以利用一个小技巧来绕过阿里云对于函数计算域名使用的限制,从而直接使用阿里云的域名进行访问先进入如下页面复制公网访问地址​​然后安装可以修改响应头的浏览器插件,例如https://github.com/FirefoxBar/HeaderEditor,然后进行类......
  • 聊一聊 .NET高级调试 中必知的符号表
    一:背景1.讲故事在高级调试的旅行中,发现有不少人对符号表不是很清楚,其实简而言之符号表中记录着一些程序的生物特征,比如哪个地址是函数(签名信息),哪个地址是全局变量,静态变量,行号是多少,数据类型是什么等等,目的就是辅助我们可视化的调试,如果没有这些辅助我们看到的都是一些无意义的......