Linux下嵌入式程序仿真调试(GDB)(二)

QT 中出现Unable to create a debugging engine问题及解决 问题: QT无法debug调试,出现:Unable to create a debugging engine提示。 分析:安装了VS 但是安装Windows SDK的时候默认没有安装CDB调试环境,如图: 解决方法:安装Debuggers调试环境。 安装方法:在电脑 控制面板\程序\程序和功能 中找到如下图: 右击选择更改: next: 勾上Debug个ing Tools for Windows, 点击Change: 等待安装完成即可:... 阅读详情

目录

前言

Linux下嵌入式程序仿真调试(GDB)(一)主要介绍了GDB交叉调试环境的搭建过程,本想把交叉编译好的gdb程序放置到Qt中来进行远程调试,但是最终出现了错误。所以这里记录搭建Qt的远程调试环境的过程(没有成功),以及在命令行下使用GDB时遇到的一些问题。

Ubuntu下Qt的GDB环境搭建(未成功)

网上找到的Qt的GDB环境搭建教程很多是Qt4的GDB调试环境搭建,但是博主使用的是Qt Creator 5.6.2,所以配置也和Qt4不一样。如果是在Qt4的环境下可以参考用Qt 调用GDB调试 Arm程序 详细步骤—-可单步执行每一行,其实如果大家仔细看这篇博文,会发现这篇文章中讲述了把海思SDK中的文件移植到QtCreator的过程。所以即使GDB环境搭建不成功,(如果有需要)也可以学到如何把海思的SDK弄成Qt版的程序。

Qt5的设置

博主没有找到所谓的Start and Debug Remote Application,因为博主的菜单来汉化了一部分,所以有点坑。不过感觉是Attach to Running Debug Server..,但是我设置了服务器地址和端口,图如下所示:
0
注意:需要在构建条件中设置调试器,如图:
1
但是我设置的arm-linux-gnueabihf-gdb没有被QtCreator识别,所以也不知道是什么问题。
最终出现如下错误:

Unknown debugger type "No engine"
Unable to create a debugger engine of the type "No engine"

当然,偶然看到一篇博客说是因为是Ubuntu16.04 64位系统,而我的arm-linux-gnueabihf-gdb是32位的,会出现不兼容的现象,所以我安装了:

apt-get install gdb-multiarch

不过,仍然是上面的错误,可能其他人能够成功吧!附【Linux开发】【Qt开发】arm-linux-gnueabihf-gdb versus gdb-multiarch

虽然知道是arm-linux-gnueabihf-gdb不被QtCreator识别,但是也不知道如何解决,希望有解决的朋友能够告知!感谢!!!

命令行调试问题记录

在命令行下调试的过程中,因为博主也没有深入去研究gdb的命令,所以只是简单讲下我理解测试过的问题。在主机端和开发板端远程连接建立后,我执行了如下命令:
第一,重复一下远程连接建立的命令:

// 开发板 
mount -t nfs 192.168.1.95:/nfs /opt -o nolock
gdbserver 192.168.1.90:20 helloWorld
// 注:开发板端是服务器端,等待主机端连接
// 主机端
arm-linux-gnueabihf-gdb helloWorld
target remote 192.168.1.90:20

第二:使用gdb进行调试,gdb调试命令,博主对这些调试命令也不熟,直接附上我的gdb调试代码。

(gdb) target remote 192.168.1.90:20 // 远程连接

(gdb) file xxx // 这里是加载运行程序 

(gdb) run       // 运行博主的程序出现不支持run,没有研究,直接continue
The "remote" target does not support "run".  Try "help target" or "continue".

(gdb) continue // continue是出现警告
Continuing.
warning: Could not load shared library symbols for 25 libraries, e.g. /tftpboot/grape_ffmpeg/lib/libavcodec.so.57.
Use the "info sharedlibrary" command to see the complete listing.
Do you need "set solib-search-path" or "set sysroot"?
warning: Could not load shared library symbols for 2 libraries, e.g. /tftpboot/qt5.5.1-grape/plugins/platforms/libqlinuxfb.so.
Use the "info sharedlibrary" command to see the complete listing.
Do you need "set solib-search-path" or "set sysroot"?

博主想要解释的就是这里的info sharedlibrary、set solib-search-path。
为什么会出现warning: Could not load shared library symbols for 25 libraries?这样的警告呢?,博主在网上查到很多相关的解释,很多都是复制粘贴,一笔带过,却没有说明具体的解决步骤。最后在这里:set solib-search-path command,才明白该如何使用。虽然都是英文,但是其实人家的解释真的非常非常简单。
这里翻译一下原文:


  • set solib-search-path command
    set solib-search-path用于指定GDB查找动态库文件时的目录。这个选项在gdbsever调试的使用有用。
  • syntax
set solib-search-path [Directories]
show solib-search-path
  • Parameters
    1. Directories
      在Linux指定目录列表,通过(:)分隔,在Windows下使用(;)分隔,这里的目录列表就是查找符号时的动态链接库目录。
  • Typical use
    这个命令在通过gdbsever远程调试程序的时候有用。如果远端电脑和GDB电脑的共享库路径不一致,GDB不会自动的找到动态链接库和相关符号,除非使用set solib-search-path指定包含的目录。
    比如,如果你从带有GDB的电脑端复制/home/testuser/libtest/libTest.so到带有GDBServer的电脑端,命名为/tmp/libTest.so,你需要指定set solib-search-path /home/testuser/libtest,来让符号加载。
    博主记:也就是说,如果我们交叉编译的程序在开发板上指定的动态链接库的路径和在Ubuntu下的动态链接库的路径不一样,我们在电脑上使用gdb调试程序的时候,无法找到对应的开发板的动态链接库路径,毕竟远端调试没有开发板上的库路径,所有我们要在电脑端(带GDB)使用电脑端的交叉编译的库路径,指定就需要使用到set solib-search-path。
  • Default value
    solib-search-path的默认值是”.”,和GDB的工作路径移植,也就是电脑端的当前目录。

总结:如果开发板端的路径和电脑端的路径不一致,我们就需要使用set solib-search-path来设置电脑端的交叉编译动态库的路径。

总结

对GDB只是简单的用了一下,本来我的问题是程序在Ubuntu下成功运行,但是在开发板上段错误,一直找不到问题,也没办法调试,因为是多线程程序,所以不太理解调试方法,这时候想到了GDB,不过后面灵机一动,解决了,果然局部变量的值传递要慎用!!!

链接地址

用Qt 调用GDB调试 Arm程序 详细步骤—-可单步执行每一行
【Linux开发】【Qt开发】arm-linux-gnueabihf-gdb versus gdb-multiarch
set solib-search-path command

手把手教你使用VSCode + gdb + gdbserver调试ARM程序 点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看嵌入式笔记!嵌入式软件开发中,最常用的调试方法就是:log打印调试法及在线调试。log打印调试法相关文章:bug解决不了?使用日志法... 阅读详情

相关推荐

VSCode+GDB+QEMU图形化调试Linux内核

Visual Studio Code + GDB + QEMU 搭建 Linux Kernel 的图形化调试界面

qq_30952829的博客 3659

linux下使用qt ,出现Unable to create a debugging engine问题的解决方法

在我进行debug qt程序的时候,出现了问题;根据百度查看Kits下面的调试工具是存在的,那么不能成功体调试的原因究竟是什么呢? 虽然 上图显示 我的ide是存在调试器的,但是打开Kits下面的构建套件,查看debugger,发现debug并没有被指定具体的调试器。如图,进行选择添加,就可以解决不能调试的问题; ...

GG802312的博客 4408

嵌入式调试进化论:从printf到gdb与Trace的实战指南

在嵌入式开发中,高效的调试手段是快速定位问题的关键。从最基础的printf重定向与日志分级,到串口调试助手的灵活运用,开发者能快速掌握程序运行状态;而面对复杂Bug,掌握gdb调试常用命令则能深入现场,查看寄存器与调用栈,精准定位异常。当仿真器不可用时,Trace与断言机制成为兜底方案,为实时性问题和偶发缺陷提供排查路径。这些技术并非彼此替代,而是互补组合,形成一套从现象到原因的完整调试链路。本文围绕从printf到gdb、Trace的演进,探讨嵌入式调试的实用方法论,助力开发者以规范流程高效解决问题。

weixin_34242509的博客 414

Unable to create a debugging engine.

问题场景: qt原本一直好好的,突然有天打开运行调试版本,提示Unable to create a debugging engine.错误。这个是指无法创建一个用于调试程序的调试引擎。如果已经正确配置还是不行,需要删除 "—.pro.user"配置文件再次生成即可。解决办法: 先查看是正确配置调试器。

weixin_45827115的博客 1540

猿创征文|【Linux Debug】Linux调试工具——GDB介绍

我是董哥,嵌入式领域新星创作者创作理念:专注分享高质量嵌入式文章,让大家读有所得!

Donge's Blog 716

Sigrity IBIS建模实战:如何用T2B工具快速转换SPICE模型(附避坑指南)

本文详细介绍了如何使用Sigrity T2B工具将SPICE模型高效转换为IBIS模型,涵盖从环境配置、模型预处理到转换流程和验证策略的全过程。通过实战案例和避坑指南,帮助硬件工程师掌握高速电路设计中的IBIS建模技术,提升信号完整性分析效率。

weixin_29243279的博客 396

linux系统下QT Creator无法断点Unclaimed breakpoint ,不能调试原因

在linux系统中 ,QTCreator无法调试,无法单步调试,unclaimed breakpoint。

sf9090的博客 4194

【浅读论文-红外和可见光图像融合-CNN】Infrared and Visible Image Fusion using a Deep Learning Framework

1.这篇是2018年ICPR会议上发表的一篇文章1。博主个人觉得这算比较早期在VIF(红外光和可见光图像融合)中加入了深度学习这一模型的论文。2.这篇文章并不是完全使用深度学习的模型,模型主体在图像分解和融合仍然采用传统的方法,只有其中一个分支在特征提取和重建方面用到了VGG网络。3.论文地址4.代码地址本文提出了基于深度学习框架的一种新算法。本文提出使用下述论文中Image fusion with guided filtering2中的分解方法将源图像分解为基本部分和细节内容。

一枚博鼠的博客 1708

QtCreator调试时出现: Unable to create a debugging engine

一步解决QtCreator调试时出现 Unable to create a debugging engine

ken2232的博客 1570

YOLOv11 + TensorRT 在 Jetson 设备上的实时部署

YOLOv11 + TensorRT 在 Jetson 设备上的实时部署

p6666666668的博客 1588

k3s快速搭建k8s集群环境

k8s 搭建方式有多种,如果你是内网环境,希望占用服务器资源少或是边缘系统(如ARM系统),强烈推荐您使用 k3s进行安装 目录k3s 简介k3s架构中文官方文档三台服务器快速搭建k8s集群安装说明步骤1 修改主机名,保持唯一步骤2 安装docker步骤3 安装master节点步骤4 安装worker节点加入集群步骤5 查看集群步骤6 部署 k8s仪表盘 dashboard k3s 简介 轻量级 Kubernetes。安装简单,内存只有一半,所有的二进制都不到 100MB K3s 是一个完全符合 Ku.

gzt19881123的专栏 2445

Linux下嵌入式程序仿真调试(GDB)(一)

目录 目录 前言 GDB 调试工具介绍 GDB调试教程 gcc调试相关编译选项 GDB交叉调试环境搭建 下载地址 编译过程 总结 链接地址 前言 项目遇到一个问题,就是程序在Ubuntu下运行的时候是正常的,至少大部分时候运行是正常的,但是移到开发板上,就会出现段错误。这时候突然想到了GDB,从来都没有接触过调试工具,以前的调试都是使用printf直接打印的方式!!!

simon曦的博客 7435

别再只看K线了!聊聊“板块联动”和“热点轮动”的跟踪方法与工具(实战派分享)

本文深入解析了如何通过板块联动和热点轮动构建高效交易系统。从三维验证框架到主流工具配置,再到持续性热点的五大特征,实战派交易员分享了识别市场主线和预判轮动方向的高阶技巧,帮助投资者摆脱单纯依赖K线的局限,提升交易决策效率。

weixin_29281941的博客 760

嵌入式Linux系统的GDB远程调试实践(转)

  嵌入式Linux系统的GDB远程调试实践摘要嵌入式Linux系统的研究和应用越来越热针对如何完成系统调试工作的问题文章介绍了GDB远程调试功能及其工作机制重点描述了使用GDB远程调试技术在嵌入式Linux系统中调试各类程序的实践示例1 引言信息技术迅猛发展个人数字助理掌上电脑机顶盒等嵌入式产品成为市场热点 Linux继在桌面系统取得巨大成功之后又以其开放源码容易定制和扩展多硬件平台支持和内置网

淡然 1229

基于Simulink的永磁同步电机三闭环(位置/速度/电流)伺服仿真

本文详细介绍了基于Simulink的永磁同步电机三闭环伺服控制系统的设计与实现,针对机器人关节控制场景。系统采用位置环(外环)、速度环(中环)和电流环(内环)的嵌套结构,通过精确的带宽匹配(电流环1kHz、速度环200Hz、位置环20Hz)实现亚微米级位置跟踪。文中提供了完整的Simulink建模步骤,包括主电路搭建、三环PI控制器实现及坐标变换模块,并验证了系统性能:阶跃响应时间35ms,位置误差<0.05°,正弦跟踪误差<0.15°,负载突加恢复时间0.08s。最后提出了参数自适应整定、前馈

amy_mhd的博客 279

【FF-A】第二章 Introduction

Armv8.4 架构引入了在安全状态下的虚拟化扩展。Arm® SMMU v3.2 架构[1]为安全流添加了对第2阶段翻译的支持,以补充在 Armv8.4 处理器状态下的安全 EL2 翻译制度。这些架构特性使得在安全状态下,彼此不信任的软件组件能够相互隔离。关于在安全状态下引入虚拟化扩展以及固件框架目标的更多理念可在名为《在安全世界使用虚拟化进行隔离》的白皮书[3]中找到。软件组件只能访问物理地址空间和系统资源的区域,例如 GIC 中对其正确运行必要的中断。

baron-周贺贺-代码改变世界ctw 528

arm-linux-gcc和gdb+gdbserver

arm-linux-gcc工具链以及agdb+gdbserver远程调试如何下载及运用

qq_53967424的博客 1949

23、微波电路中的过孔、过孔围栏与接地焊盘建模分析

本文详细分析了微波电路设计中过孔、过孔围栏及接地焊盘的建模与优化方法。探讨了过孔模型的发展及其电感与电容特性,通过场求解器和集总元件模型提高建模精度。此外,分析了过孔隔离围栏在改善信号隔离中的作用,并通过2.5D和3D电磁仿真验证其效果。最后,研究了接地焊盘中过孔布局对电路稳定性的影响,提出了优化过孔位置以消除谐振和杂散振荡的方法。文章为微波电路设计提供了重要的理论支持和实践指导。

convnet3designer的博客 164

使用VSCode + gdb + gdbserver调试ARM程序

嵌入式软件开发中,最常用的调试方法就是:log打印调试法及在线调试。。开发STM32时,我们有IDE可以用,IDE中已经集成有调试器,配合仿真器使用起来很方便。而在Linux应用程序的开发中,常常直接在命令行使用gdb进行调试,或者可以使用VSCode+gdb进行调试。而在嵌入式Linux中,我们如何对开发板上的arm程序进行调试呢?我们可以使用VSCode+gdb+gdbserver来调试我们arm开发板上的arm程序。下面简单介绍一下使用方法,前提是开发板与PC可以进行无线/有线通信。...

子曰小玖的博客 1704

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

可视化GDB调试工具(Graphic GDB)简介

长期以来,Linux平台缺少合适的可视化工具进行GDB调试,GDB命令行固然灵活,但是需要熟记各种命令,变量的查看,桟空间查看,都有相应命令,每次敲入命令相对可视化工具其实效率是比较低的。 笔者从事嵌入式开发的过程发现,用过的体验最好的开发工具是Lauterbach 公司的Trace32工具,RealView等工具也有类似的体验,这些工具功能强大,往往同时配置了GUI前端,硬件后端,同时支持多种协议,J-TAG,SWD,RDI,GDB等,主板bring up的过程中,这些工具可以方便的获取...

寒梅独自开 1540

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

linux设备上的gdb调试,Lniux设备驱动gdb调试

相当于shell的cd命令,pwd显示当前所在目录(4)程序输出info terminal用于显示程序用到的终端模式3.break命令在GDB中用break命令来设置断点,设置断点方法如下:(1)break ,指定在函数function处设置断点(停止)(2)break ,指定行号停止(3)break+offset / break - offset ,在当前行号前面或后面的offset行停止(4)...

weixin_39719427的博客 384

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ubuntu c c++ gdb make_从51单片机到Linux 程序调试利器GDB(教程20)

大家好,我是兔子。是一个嵌入式软硬件工程师。经过不懈的努力,已经成功转型为嵌入式驱动工程师。太不容易了。玩过单片机的都知道,一般Keil或者IAR等IDE软件。都带有程序调试功能。使用J-Link,ST-Link等仿真调试工具可以很方便的调试程序。比如可以对程序进行单步执行,全速运行,查看变量数据,打断点调试等。对于程序分析,调试很有帮助。那Linux下有没有相关工具可以进行类似的调试呢?经过兔子...

weixin_39517859的博客 277

Eclipse+Gdb+嵌入式远程调试

第一步:安装arm-linux-gcc 这个网上很多,这里不再重复,本开发板一般都自带有该工具。 第二步:安装eclipse插件:Zylin Embedded CDT 进入help菜单 -> Software Updates... -> Available Software -> Add Site 输入http://opensource.zylin.com/zylincdt,按提示进行

iamzzg1988的专栏 3065

嵌入式Linux系统的GDB远程调试实践

                                                        嵌入式Linux系统的GDB远程调试实践摘要嵌入式Linux系统的研究和应用越来越热针对如何完成系统调试工作的问题文章介绍了GDB远程调试功能及其工作机制重点描述了使用GDB远程调试技术在嵌入式Linux系统中调试各类程序的实践示例1 引言信息技术迅猛发展个人数字助理掌上电脑机顶盒等嵌入

董磊的专栏 1783

linux下RP2350芯片rt-thread开发(二)调试准备

我的前一篇文章《linux下RP2350芯片rt-thread开发(一)环境准备》中介绍了rt-thread工程的建立和编译方法,已经生成出固件并在RP2350板子上运行。这一篇文章介绍如何通过gdb调试固件。

weixin_54721765的博客 755
上一篇: Linux下嵌入式程序仿真调试(GDB)(一)
下一篇: Qt基础学习(一)——.pro文件
simonXi-tech
博客等级 码龄10年 398粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值