程序调试

GDB调试之TUI界面

寵の児 提交于 2020-01-25 06:32:37
TUI(TextUser Interface)为GDB调试的文本用户界面,可以方便地显示源代码、汇编和寄存器文本窗口,TUI使用效果如下图所示。 Tui界面可以通过运行gdbtui或gdb-tui命令进入(其它变种gdb也一样,如arm-none-eabi-gdb-tui),当然也可以进入gdb界面后使用TUI快捷键打开,如C-xC-a快捷键,详见TUI快捷键绑定章节。 1 TUI Overview 在TUI模式中,可以显示以下几个窗口: 命令窗口 用于GDB调试时的命令输入和命令结果输出显示,与普通GDB窗口无异。 源代码窗口 用于显示程序源代码,包括当前运行行、中断以中断标识等。 汇编窗口 显示当前程序的汇编代码。 寄存器窗口 显示处理器的寄存器内容,当寄存器内容发生改变时会高亮显示。 源代码窗口和汇编窗口会高亮显示程序运行位置并以'>'符号标记。有两个特殊标记用于标识断点,第一个标记用于标识断点类型: B 程序至少有一次运行到了该断点 b 程序没有运行到过该断点 H 程序至少有一次运行到了该硬件断点 h 程序没有运行到过该硬件断点 第二个标记用于标识断点使能与否: + 断点使能Breakpointis enabled. - 断点被禁用Breakpointis disabled. 当调试程序时,源代码窗口、汇编窗口和寄存器窗口的内容会自动更新。 TUI运行时

python语法拾遗-OOP与错误调试

依然范特西╮ 提交于 2020-01-25 02:58:06
title: python语法拾遗(一) date: 2019-11-12 12:23:49 categories: Python Python语法相关 tags: python 语法使用 OOP description: python面对对象编程(类,继承,多态),错误调试 python面对对象编程(类,继承,多态,鸭子类型) 概念 类(class)与实例(instance) 类是抽象的模板,实例是根据类创建的具体“对象”。实例之间拥有相同的方法,但各自数据可能不同。 __init__ 方法,给模板类添加必要的属性。其中,在变量名前添加‘__’双下划线,可以将其变为私有变量,即外部不能随意访问修改。 在类中定义方法,可以保护内部数据,将方法的具体细节隐藏在类内部。 class Studnet ( object ) : def __init__ ( self , name , score ) : self . __name = name self . __score = score def get_gender ( self ) : return self . __name def set_score ( self,score ) : if 0 <= score <= 100 : self . __score = score else : raise ValueError (

程序员修炼之道读后感2

百般思念 提交于 2020-01-25 00:26:36
俗话说,工欲善其事,必先利其器。作为软件工程师掌握好几门工具是取得成功的根本。花时间去学习这些工具,你会有意想不到的收获。用纯文本来保存知识,但其也有一些缺点如所占空间较大,但其优点也很明显如永不过时,杠杆作用,易于调试。 学会使用shell,使你的生产力提高。至少用好一种编辑器,彻底了解他,掌握它,因为它是可扩展,可配置,可编程。 使用源码控制系统来追踪你在源码和文档中所做的每一项变动,将自己日常工作保存在仓库中。不要恐慌,当调试时产生了BUG,要理清自己的思路,不要在一些不切实际的地方浪费时间。 作为程序员要明白自己不可能写出完美的软件,但是你可以让自己的程序变得更好,所以当有问题出现时不要害怕,去勇敢的解决他,你自己将会变得更加完美,能力将会更强。 学会断言时编程,计算机是不会说谎的,跟它打交道比与人更简单,它会如实的反应你的问题,你只需要改正就可以了。因此在编程是不要进行自我欺骗,而是尽快找到它的问题,加以解决,而断言则可以帮助你更好解决这一问题。 注重实际的程序员谁也不信任,包括我们自己。 来源: https://www.cnblogs.com/bingoing/p/4359158.html

Qt的安装与配置问题

柔情痞子 提交于 2020-01-24 22:43:36
12.qtcreator配置 1.打开 tools->options 选择Build&Run 2.增加Compilers(编译器) 点击Add选择GCC 然后点击Browse选择g++ /home/csgec/software/arm-2014.05/bin/arm-none-linux-gnueabi-g++ 选择完成点Apply 3.增加Qt版本 选择Qt Versions 点击Add 选择/usr/local/qtlib5.6.0/bin/qmake 选择完成点击Apply 4.增加工具包 选择Kits 点击Add 修改Complier为第2步设置的 修改Qt version为第3步设置的 Name改为Qt5.6.0-ARM 完成后点击Apply and OK 集成的QT及QT Creator安装比较easy,本文介绍的是QT和QT Create独立安装的方法,当然,也不是很难。 首先说明一下:QT是一个类库,QTCreator是一个框架。要使用QTCreator这个框架必须先把QT的平台搭建好。这个平台需要什么呢?主要需要以下几样:QT(QT库每个版本都有些许变化,可以根据自己需要选择版本,这里的个人需要并不是指功能,而是指你可以选择的教学资源,你有本QT4的书,最好就选择QT4的库,当然,你非要选择QT5也是可以的啦,这里只是建议),编译器(这里主要有两种

聊一聊如何用IDEA追踪Bug?

孤者浪人 提交于 2020-01-24 21:13:05
Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。 Debug开篇 首先看下IDEA中Debug模式下的界面。如下是在IDEA中启动Debug模式,进入断点后的界面,我这里是Windows,可能和Mac的图标等会有些不一样。就简单说下图中标注的8个地方。 以Debug模式启动服务,左边的一个按钮则是以Run模式启动。在开发中,我一般会直接启动Debug模式,方便随时调试代码。 断点:在左边行号栏单击左键,或者快捷键Ctrl+F8 打上/取消断点,断点行的颜色可自己去设置。 Debug窗口:访问请求到达第一个断点后,会自动激活Debug窗口。如果没有自动激活,可以去设置里设置,如图1.2。 调试按钮:一共有8个按钮,调试的主要功能就对应着这几个按钮,鼠标悬停在按钮上可以查看对应的快捷键。在菜单栏Run里可以找到同样的对应的功能,如图1.4。 服务按钮:可以在这里关闭/启动服务,设置断点等。 方法调用栈:这里显示了该线程调试所经过的所有方法,勾选右上角的[Show All Frames]按钮,就不会显示其它类库的方法了,否则这里会有一大堆的方法。 Variables:在变量区可以查看当前断点之前的当前方法内的变量。

程序员修炼之道读后感(二)

时间秒杀一切 提交于 2020-01-24 02:51:14
俗话说,工欲善其事,必先利其器。作为软件工程师掌握好几门工具是取得成功的根本。花时间去学习这些工具,你会有意想不到的收获。用纯文本来保存知识,但其也有一些缺点如所占空间较大,但其优点也很明显如永不过时,杠杆作用,易于调试。 学会使用shell,使你的生产力提高。至少用好一种编辑器,彻底了解他,掌握它,因为它是可扩展,可配置,可编程。 使用源码控制系统来追踪你在源码和文档中所做的每一项变动,将自己日常工作保存在仓库中。不要恐慌,当调试时产生了BUG,要理清自己的思路,不要在一些不切实际的地方浪费时间。 作为程序员要明白自己不可能写出完美的软件,但是你可以让自己的程序变得更好,所以当有问题出现时不要害怕,去勇敢的解决他,你自己将会变得更加完美,能力将会更强。 学会断言时编程,计算机是不会说谎的,跟它打交道比与人更简单,它会如实的反应你的问题,你只需要改正就可以了。因此在编程是不要进行自我欺骗,而是尽快找到它的问题,加以解决,而断言则可以帮助你更好解决这一问题。 注重实际的程序员谁也不信任,包括我们自己。 来源: https://www.cnblogs.com/haheihei/p/11731605.html

VSCode配置C语言开发环境

两盒软妹~` 提交于 2020-01-23 20:41:02
一、 MinGw的下载与安装 首先这个博客的基础建立在你已经有VSCode的基础上,因为windows下VSCode不直接具备对于C语言的编译调试工具,所以要下载集成gcc等工具的MinGw以提供扩展支持。 下载地址: https://sourceforge.net/projects/mingw-w64/files/ 下载后解压到待安装文件夹即可,注意下载过程可能有些漫长,不过已经比在线安装要快很多了。 接下来就是配置环境变量,可以看到bin文件夹下gcc和gdb都有,温馨提示不要图快去CSDN下载这种包,很容易缺失文件,还乖乖用官方的比较全。 补充:这里的环境变量是在win10下配置的。 以上完成后,按win+r键打开运行,输入cmd回车后,可在控制台下输入 gcc -v 查看当前计算机mingw是否安装成功,如果显示以下结果,说明你安装成功了。 二、 配置VSCode运行和调试 首先要下载插件Code Runner,然后勾选这两个选项 然后来个测试代码,建立一个文件夹,再新建一个C语言文件就可以。【请忽略我截图中的Project1,那个是在VStudio中运行建的工程】 运行测试代码: # include <stdio.h> int main ( ) { printf ( "Luminary" ) ; return 0 ; } 两种运行方法,gcc命令行和直接点击运行按钮

Python 调试库 pdb

倖福魔咒の 提交于 2020-01-22 19:30:24
文章目录 一、Python pdb 简介 二、Python pdb 使用方法 1、import 使用 2、命令行直接用 三、Python pdb 运行简析 之前写比较复杂的 shell脚本的时候,经常会用 -x 来调试,很方便也很清晰。 然后我就在想 python 脚本是不是也有类似的调试方法。 一查果然也有,就是 pdb ; 感觉也挺好用的,这里记录下使用过程。 一、Python pdb 简介 Python 的 pdb,是其自带的一个调试库。 它为 Python 程序提供了交互式的源代码调试功能,是命令行版本的 IDE 断点调试器,完美地解决了不借助工具进行调试的问题。 二、Python pdb 使用方法 使用方法有两种: 1、import 使用 # test.py import pdb pdb . set_trace ( ) a = 20 b = 10 c = 15 e = ( a + b ) * c print "(a + b) * c =" , e e = ( ( a + b ) * c ) print "((a + b) * c) =" , e e = a + ( b * c ) print "a + (b * c) =" , e 2、命令行直接用 python3 - m pdb test . py 三、Python pdb 运行简析 当运行这个程序时

快捷调试Nuget包

限于喜欢 提交于 2020-01-22 18:21:53
开发C#项目时通过Nuget引用添加依赖很方便,但是调试的时候就不一样了。 情景再现 我们有一个超级基础的库 A ,我们的多个公共组件 B , C , D ,和最终产品 E 都依赖于库 A 。 现在我们在开发 A 的新功能时,期望能在最终产品 E 中得到测试验证。 不可行方法 通过添加引用的方式添加本地包 由于最终产品 E 的依赖项,依赖于nuget上的库 A ,nuget发现有同名dll就会出现冲突 可行方法 最简单的方法是,我们打出一个alpha包,发送到nuget服务器中,然后在最终产品 E 中升级 缺点是成本较高,每次测试都打一个包上传,版本号上升搜搜的。前提还是每个开发小伙伴都能够上传nuget 另一个较为方便的方法是,我们使用国内著名WPF大师猫神( 晒太阳的猫 ),开发的DLL源码调试工具 DLL Reference Path Change Auto - Visual Studio Marketplace 这个工具非常棒,有着全5星好评,大家快去下载 懒人方法 替换nuget缓存 我们知道在vs中的nuget包,从nuget服务器中下载之后会添加到本地nuget缓存目录。之后每次编译时只需要从nuget缓存中获取现有的dll进行编译。那么我们就可以通过替换nuget缓存目录中的文件实现使用本地dll调试。 实操 我们找到目标nuget库所在的缓存目录

GStreamer基础教程13 - 调试Pipeline

China☆狼群 提交于 2020-01-22 18:12:52
摘要   在很多情况下,我们需要对GStreamer创建的Pipeline进行调试,来了解其运行机制以解决所遇到的问题。为此,GStreamer提供了相应的调试机制,方便我们快速定位问题。 查看调试日志 使用GST_DEBUG环境变量查看日志   GStreamer框架以及其插件提供了不同级别的日志信息,日志中包含时间戳,进程ID,线程ID,类型,源码行数,函数名,Element信息以及相应的日志消息。例如: $ GST_DEBUG= 2 gst-launch- 1.0 playbin uri=file: /// x.mp3 Setting pipeline to PAUSED ... 0 : 00 : 00.014898047 47333 0x2159d80 WARN filesrc gstfilesrc.c: 530 :gst_file_src_start:<source> error: No such file " /x.mp3 " ...   我们可以发现,只需要在运行时指定GST_DEBUG环境变量,并设置日志级别,即可得到相应的日志。由于GStreamer提供了丰富的日志,如果我们打开所有的日志,必定会对程序的性能有所影响,所以我们需要对日志进行分级,GStreamer提供了8种级别,用于输出不同类型的日志。 级别0:不输出任何日志信息。 级别1:ERROR信息。