代码工程/Qt 开发环境提升(2)

概述

Here,续接 C++/Qt 开发环境提升(1),它主要讲解了Qt 4.8.6的源码编译方法(源码编译,是进行Qt程序深入调试的基础),编译注意事项,Qt帮助系统,Qt学习方式等。本博文将记录在使用Qt集成开发环境过程中遇到的实际问题…

编译问题

macro name is a reserved identifier

在这里插入图片描述
在学习QtCreator架构时,打开了 帮助 - 关于插件 - C++ - ClangCodeModel插件,结果就有上述提示。未继续深究Clang

运行问题

单步调试-结构体局部变量

刚刚发现了一个奇怪的问题,在使用QtCreator进行F10单步调试时,函数内部的结构体变量,即使是加上断点也走不到,且运行到该行时,断点符号会消失。初步感觉上,是程序没有编译好,但是重新完全编译后,依然存在该问题,勾起了我的好奇心。于是乎单独的写了一个测例,测试结果说明了,局部的结构体变量,如果这个结构体没有构造函数(无关乎结构体组成元素的类型),则在进行QtCreator下的gdb调试时,定义局部结构体变量的这一行,不会走到。然后,我打开了好久不用的VS,发现其测试结果与上述一致,在一行结构体(无构造函数)局部变量定义代码前边加上断点标记符号,但是在进行调试运行时该标记会自动消失,即不能断在该行,单步调试也不走它。

另外,发现这个局部的结构体变量,在进行memset前极有可能出现不是全零的情况,因此对于结构体变量的memset初始化过程,并不是可有可无的。

Qt 定位内存起始地址失败

    int  hex1 = 0x1234;
    uint hex2 = 0x1234;     //无法直接调试内存
    quint32 hex3 = 0x1234;  //无法直接调试内存
    unsigned int hex4 =0x1234;

在QtCreator调试环境-本地变量与表达式(Locals and Expressions)窗口,右键,查看变量对应的内存,如下图,Open Memory View at Object’s Address / Memory Editor at Object’s Address,处于灰色禁用状态。(Here该是QtCreator4.4.1的一个缺陷)

hex1可以跳转到变量地址hex2不可以跳转到变量地址(灰色)
在这里插入图片描述在这里插入图片描述

进一步测试这个缺陷发现,对于使用int、unsigned int直接定义的变量,使用[打开内存编辑器]功能时,可以直接准确跳转到变量起始地址(Open Memory View at Object’s Address),但是当你使用uint、quint32等数据类型(ttypedef unsigned int uint/quint32 )定义变量时,就出现了上图右侧的显示风格(灰色,无法信息接收)。

查看U8*的变量

试图在变量监视窗口看一个U8指针的值,结果显示为0,不要惊慌,你只是没有选对数据展示格式。

在这里插入图片描述在这里插入图片描述

修改方案如下,选中上述第一幅图中粉色标记位置,右键–

在这里插入图片描述在这里插入图片描述

编辑问题

无法使用高级搜索

这里指的是在QtCreator中无法使用 Ctrl+Shift+F 组合按键,打开IDE的高级搜索功能。在办公机器(Win7系统)存在这样的问题,知道其与搜狗输入法有关,因为只要在使用上述组合键时,先按Ctrl+Shift+空格将输入法隐藏,则可以正常打开QtCreator高级搜索。但是这招在Win10机器上却不管用。后来多方查证,关闭了搜狗输入法-属性设置-高级-系统功能快捷键-取消简繁切换的勾选,问题解决。

代码文件无法输入中文

[QtCreator无法输入中文],在使用QtCreator编辑器时,偶尔遇到过在.h或.cpp文件编辑时无法输入中文的情况:输入法显示搜狗中文,但是当你敲击键盘时,没有弹出来中文候选字,而是直接将英文字母输入进去了。后来,总结了这种现象的原因。

Qt文件编辑器的默认设置文件实际编码与本地默认编码不一致时
在这里插入图片描述在这里插入图片描述

“无法输入中文的状况就出现在上述情景下”,当我们选择了按照实际代码文件编码格式重新载入显示时,(如上述情况,本地默认是ANSI,但是代码文件是UTF的,选择按UTF8重新载入),此时再对代码文件进行编辑,则问题出现。解决办法是,使用NotePad等工具,转换代码文件为QtCreator本地默认编码格式,然后重新打开再进行编辑就好了!

GDB调试

参见

调试乱码问题

Qt5 中文乱码解决方法剖析 # https://blog.csdn.net/li_jian_xing/article/details/47609621

控制台的使用

一直有个疑问:不管是系统控制台,还是QtCreator控制台,多线程访问控制器输出时,它们能否保证显示顺序就是真实的运行顺序 ?

在进入这个问题前我们先来看看控制台基础概念。在MSDN上有一部分关于Console的资料,可以找找你想要的答案!控制台有一个输入缓冲、至少一个屏幕缓冲(输出缓冲)构成。多个进程可共享一个控制台。其实到现在,骨子里我是相信在多线程下Console显示能保证与实际系统运行顺序一致的,但是打印看上去有点怪?而这种所谓的怪现象,可能并不怪,这可能是CPU执行策略导致的,那么我们应该去研究CPU时间片轮循、CPU等待、并行执行等概念!

关于多线程的执行,我有一堆问题没有搞明白,这个以后单独开一篇boke。先看看这个问题: 在多核CPU下,同一进程下的多个线程可不可以并行运行 ? 也许对想搞明白什么有所帮助。另外,用户应用程序中,能否通过底层接口感知到自己的执行cpu、直接的执行时间、等待时间等?

断言使用

define Q_ASSERT_X(cond, where, what) ((!(cond)) ? qt_assert_x(where, what,__FILE__,__LINE__) : qt_noop())
 
int qAllocMore(int alloc, int extra)
{
    Q_ASSERT(alloc >= 0 && extra >= 0);
    Q_ASSERT_X(alloc < (1 << 30) - extra, "qAllocMore", "Requested size is too large!");
 
    //控制台打印信息
    //ASSERT failure in qAllocMore: "Requested size is too large!", file tools\qbytearray.cpp, line 73
 
}
 
//请继续学习qt_assert_x的实现过程

“__FILE__”:在源文件中插入当前源文件路径及文件名; __LINE__:在源代码中插入当前源代码行号;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《正点原子 嵌入式Qt开发指南》是一本面向嵌入式开发者的书籍,旨在帮助读者了解Qt开发框架并在嵌入式设备中进行应用开发。 该书内容丰富全面,从Qt框架的基础知识出发,介绍了Qt的核心概念和基本使用方法。读者可以了解到Qt的窗口管理、界面设计、事件处理、信号与槽以及对象模型等基础知识。此外,书中还详细讲解了Qt Creator的使用方法,帮助读者快速上手进行开发工作。 此外,书中还对嵌入式设备开发的相关知识进行了介绍。读者可以了解到嵌入式开发的基本原理、硬件接口的使用以及底层驱动的开发等知识。同时,书中还对如何将Qt应用移植到嵌入式平台进行了详细说明,包括交叉编译环境的搭建、库文件的处理等内容。 《正点原子 嵌入式Qt开发指南》内容实用,适合嵌入式开发者作为参考工具书。无论是初学者还是有一定经验的开发者,都可以从中找到对应的知识点进行学习和应用。此外,该书还包含了大量的实例和案例,帮助读者加深对知识的理解和应用能力的培养。 总而言之,该书详细讲解了嵌入式Qt开发的各个方面,是一本值得推荐的工具书。无论是对于想要进一步了解Qt开发的初学者,还是对于已经有一定经验的开发者,都可以从中找到对应的知识点进行提升和拓展。 ### 回答2: 《正点原子 嵌入式QT开发指南》是一本介绍嵌入式QT开发的指南书籍。嵌入式QT开发是指在嵌入式系统中利用QT框架进行应用开发的技术。 这本指南首先介绍了QT框架的基础知识,包括QT的架构、核心组件和基本概念。然后详细介绍了嵌入式系统的硬件平台和操作系统,如ARM平台和Linux系统等。随后,指南说明了如何在嵌入式平台上搭建QT开发环境,并详细介绍了QT Creator的使用方法和基本操作。 接着,指南逐步介绍了QT的常用控件和布局管理器,以及常用的QT模块,如网络通信、数据库和图形渲染等。同时还介绍了如何使用QT进行多线程编程和跨平台开发。 除了基础知识外,指南还提供了丰富的示例代码和实践项目,帮助读者理解和掌握嵌入式QT开发的各个环节。通过实际的案例演示,读者可以学习如何应用QT进行界面设计、事件处理和数据交互等。 总的来说,《正点原子 嵌入式QT开发指南》是一本全面详实的嵌入式QT开发指南。它适合作为嵌入式开发人员的学习教材,也适合作为嵌入式QT开发的实践指南。无论是初学者还是有一定经验的开发者,都可以从这本书中获得丰富的知识和实践经验,提高自己的嵌入式QT开发能力。 ### 回答3: 《正点原子 嵌入式Qt开发指南》是一本关于嵌入式Qt开发的指南书籍。嵌入式系统是一种特定的计算机系统,被嵌入到其他设备中,具有特定的硬件要求和应用场景。Qt是一个跨平台的应用程序开发框架,能够帮助开发者快速构建用户界面和应用程序。 本书主要介绍了如何利用正点原子开发板进行嵌入式Qt开发。首先,书中介绍了嵌入式系统的基本概念和发展背景,帮助读者了解嵌入式开发的重要性和应用领域。接着,书中详细介绍了Qt框架的基本知识和使用方法,包括Qt的架构、控件库、信号与槽机制等。然后,书中介绍了如何使用正点原子开发板进行嵌入式Qt开发,包括环境搭建、工程创建、编译和调试等。最后,书中还提供了一些实际项目案例,帮助读者通过实践掌握嵌入式Qt开发的技巧和经验。 本书的特点是结合了理论和实践,通过清晰易懂的语言和实例代码,帮助读者快速入门和掌握嵌入式Qt开发。同时,书中还提供了丰富的参考资料和学习资源,方便读者进一步深入学习和应用。 总的来说,《正点原子 嵌入式Qt开发指南》是一本实用的开发指南,适合有一定编程基础和嵌入式开发需求的读者阅读。通过学习本书,读者可以了解嵌入式系统和Qt框架的基本知识,掌握使用正点原子开发板进行嵌入式Qt开发的方法,提升自己在嵌入式开发领域的技术能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值