- 博客(35)
- 资源 (1)
- 收藏
- 关注
原创 QT 中使用QXlsx 读写文件
PC 工具中需要操作xlsx格式的数据,前面使用的是QAxObject,需要一些设置,还要安装office的控件或者wps的控件,在一些电脑上面有的时候还会有异常,后面发现一个好像的开源库QXls,发现读写的速度比以前快,而且只需要简单的添加文件到工程中就可以。然后添加QXlsx.pri 到你工程的pro文件中。将QXlsx 文件夹copy到你的工程目录下面。然后就可以把xlsx文件中的内容读取出来。下面给出一个简单的例子。
2024-09-12 17:46:26 598
原创 Fast-DDS 测试环境搭建
我们在编译完成Fast-DDS 的lib 之后需要测试dll 的使用方法和调试我们自己的应用程序,所以我们需要建立一个测试环境来完成这些任务。
2024-07-16 18:20:31 476
原创 Fast DDS library windows 下源码编译(cmake)
基于Fast DDS 的源码来编译相关的库,然后可以通过python 来调用库文件实现dds 数据通信,本文就详细的介绍编译过程。
2024-07-11 16:24:46 896
原创 Linux 0.11 中断描述符表的建立
Linux 操作系统在进入main 函数之后会重新建立中断描述符表,本文就来详细的描述一下中断描述符表表的建立过程。
2024-04-26 11:27:59 323
原创 Linux 内核调试环境搭建
学习Linux内核,我们可以看书,实际我们最好可以有一个可以调试的环境,本文就简单介绍一下使用Qemu 和gdb 来调试和查看Linux kernel。在ubantu 20.04 的PC 上面编译内核源码,通过QEMU 来运行内核,然后使用gdb 来调试查看内核数据。
2024-04-24 11:54:34 1248
原创 C++ 中异常机制
5:如果throw 的发生并不在try 区段中,或是没有一个catch 吻合,name系统必选(a)析构所有active local objects (b)从堆栈中将当前的函数推离(c)进入程序堆栈的下一个函数中去,然后重复2~5.throw:在程序的某处发出一个exception,exception可以是默认的类型,也可以是user自定义的类型。C++的exception handling 有三个关键字组成:throw ,catch,try。try:一个区段,将可能引起exception的部分包含起来。
2024-01-05 11:36:42 858
原创 C++ 默认构造函数
我们在定义一个类的时候,编译器会帮助我们完成一些工作,其中一项就是生成默认的构造函数。先看一下下面的程序,能够将一个int 型的变量赋值给到一个class Animal,这种变换很多时候会引起不必要的错误。为了解决这个错误我们需要消除这种编译器的自动行为,让类型转换由程序员来控制,加上explicit关键字就可以消除这个错误。如果我们没有定义一个构造函数,这个时候会出现什么情况,从下面的图片可以看出构造函数没有做任何事情,连变量age 都没有初始化为0。
2023-12-26 18:13:14 856
原创 正确计算字符长度
在使用字符串的时候经常需要计算字符串的长度,使用不正确的字符串大小会导致缓冲区溢出。字符串使用的是字符数组来实现,所有我们需要区分几个重要的属性,大小(size),计数(count),长度(length)。char 类型的字符串,一个字符数组的大小等于char 数组的计数,长度是空字符前的字符数,值小于或等于大小减去一。看下面这段代码的错误,分配的内存没有考虑一个字符的宽度sizeof(wchar_t)当宽字符串被认为是窄字符串或多字节字符串时,可能会不正确的计算字符串大小。在空终结符之前的字符数。
2023-12-07 14:20:59 603
原创 常见的字符串操作错误
我们编写程序的时候经常要对字符串进行操作,在使用的时候经常会发生一些错误,下面我们就来总结一下这些错误。最常见的错误有四种,分别是无界字符串复制(unbounded string copy),差一错误(off-by-one error),空字符结尾错误(null termination error)以及字符串截断(string truncation)。当目标字符数组的长度小于一个字符串的时候就会发生字符串截断,字符串截断虽然不会发生溢出,但是后丢失数据,同样对程序来说也是一个隐藏的错误。
2023-12-06 15:22:59 552 1
原创 常见的C++内存管理错误
C++ 程序的动态内存管理非常复杂,容易出现缺陷。常见的与内存管理相关的编程缺陷,包括未能正确处理分配失败,解引用空指针,写入已经释放的内存,多次释放相同的内存,不当配对的内存管理函数,未区分标量和数组,以及分配函数使用不当。
2023-11-24 20:23:36 1027 1
原创 QT 自定义控件保存到xml 文件中
前面自己定义了一些控件可以实现一些显示功能,现在需要把控件保存成xml 文件,然后打开文件可以把控件显示在页面上。功能比较简单在原来的页面class 中增加两个函数来实现这个功能。
2023-09-20 16:59:58 359 1
原创 QT 工程中开发插件dll
接口类是一种纯虚函数类,它只包含纯虚函数,没有数据成员和实现函数。接口类的作用是定义一组规范,由派生类实现具体的功能。Q_DECLARE_INTERFACE 需要两个参数,第一个参数是接口的名称,第二个参数是接口的 IID。Q_DECLARE_INTERFACE 是 Qt 宏,用于声明一个接口类。开发了一个测试SOA的工具,现在想在工具的框架中增加 插件的功能。定义一个加载dll 的函数:bool loadPlugin();主工程中调用 dll 中的接口 name。新建了一个pluginTest 的工程。
2023-08-30 14:08:16 161 1
原创 Peach Tool 源码的编译
Peach 源码下载地址:https://gitlab.com/peachtech/peach-fuzzer-communityPeach 工具下载地址:https://sourceforge.net/projects/peachfuzz/ The package repository hosts the packages you need, add it with the following commands. Note: the packages should work on newer Ubunt
2023-08-08 16:25:23 232 1
原创 QT COM 接口给到Python 使用
用QT 开发的exe执行成可以手动来测试someip ,现在想让工具可以提供外部接口给到Python 来使用,研究了一下实现方式,可以在exe的源码中增加com 接口来给到外部程序使用。当我们以server 运行的时候不希望UI 弹出来,我们可以在main中做一个设置。这样我们python 调用com 接口的时候就不会有UI出现。pro 文件中添加需要的module axserver。我们在UI 中添加几个控件来测试一下TAM 中的函数。添加一个类作为导出类,提供接口给到外部程序使用。
2023-04-19 12:51:15 268
原创 Windbg 分析QT 程序中的Crash问题
下面是用windbg 分析问题的过程,首先我们需要确认自己的dump 和pdb 文件要对应上,否则错误的pdb会把我们带到错误的地方。开发的工具中添加了google 的breakpad 来抓取dump 文件,在出现问题的时候可以用来分析crash发生的原因。找到和自己的QT开发工具对应的版本的pdb 文件然后下载下来,我的QT 是5.14.2,在下面的路径上下载相关的文件。首先我们需要加载符号文件在windbg的菜单File->Symbol file path 中来设置符号文件路径。通常我们会使用指令:!
2023-04-13 11:31:50 610 1
原创 QT 中使用Npcap 来抓取网卡数据
最近在开发someip 的测试工具,手动测试的时候通过wireshark 来抓取网络中的数据,在工具的自动化测试中希望可以保存网卡中的数据来进行分析使用。我在自己的工程文件下有一个include /npcap 文件夹,把lib和include copy到里面 然后在QT的 .pro。然后我们可以按照example 中的例子来使用相关的API 函数实现自己的功能。以上就是使用npcap的一个简单过程,一些其它的用法可以参考sdk 里面的范例。文件中添加头文件和lib的路径。首先需要设置dll 的路径。
2023-04-11 12:07:33 1753 1
原创 QT 使用Google Breakpad 捕获dump
我们用QT 开发windows 应用程序,有的时候程序发生了crash ,光靠log 有的时候无法找到问题,很多时候应用程序给到其他的人使用,尤其是一些偶发的问题很难复现,这个时候我们就需要一些其他的方式来解决问题。使用比较简单,引用头文件,然后定义一个ExceptionHandler,当工具发生crash 的时候会在指定的文件夹中生成一个dump file,我们可以用windbg 来分析dump 文件找到crash的原因。breakpad 编译lib的时候需要注意选择MD,保持QT 和lib之间的一致。
2022-12-15 11:24:53 531
原创 QT 实现百万级的数据显示内存消耗几十兆
用QT 开发了一个上位机的工具用来解析串口的数据,数据量比较大 ,如果QT tableview 控件完全显示,内存消耗较大,所以解析结果先建立sql 数据索引,然后通过垂直滚动条的变化动态地获取数据,每次从数据库中提取50条,测试下来内存消耗较小,可以实现百万或者千万级的数据显示。1:先将垂直滚动条的valuechanged signal 和自定义的slot 绑定。2:slot 传入垂直滚动条的位置值value 在线程中搜索数据。3:线程中取出数据返回到UI中显示。4:UI中显示数据库中显示的数据。
2022-10-30 22:46:11 1976
google break pad dll 和头文件
2023-04-13
ARM 64位 工具:iozone ,iperf3,memtester,nmon,stress-ng
2022-09-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人