精华内容
下载资源
问答
  • 使用linux系统编写c语言以及调试c语言 例子为helloworld 多图

    以helloworld为例子

    第一步:下载c语言编译器(gcc)和调试器(gdb)

    1,ctrl+alt+t打开终端

    2,输入:sudo apt-get install gcc                  这个是安装c语言编译器(gcc)之后会要求你输入密码,盲打就好,然后会问你是否安装,你输入y就好。

    3,输入:sudo apt-get install gdb                  这个是安装c语言编译器(gdb)之后会要求你输入密码,盲打就好,然后会问你是否安装,你输入y就好。


    第二步,编写程序

    1,打开终端(ctrl+alt+t)

    2,输入 vim【空格】xx.c【回车键】。。。。。。。。。注意,xx是c语言文件的名字,你随便取什么名字都可以。

    3,进入vim界面,开始输入程序。记住,输入前请按一下i键,不然无法输入。

    #include<stdio.h>

    int main()

    {

    printf("hello world!");

    return 0;

    }


    4,按ESC,然后依次输入           :wq                   (就是:wq),它的含义是退出并保存。


    5,输入gcc xx.c                  将c语言进行编译


    6,输入./a.out                    输出结果



    第三步,调试c语言

    1,输入gcc -g xx.c -o xx                      这是将调试文件xx.c从gcc加载进入gdb中。

    2,查看代码 l

    3,设置断点。

    输入 b   行数

    如b 4


    查看断点信息。

    输入 info b


    4,查看参数变化。

    输入p  参数名

    如p  a

    就是查看参数a在断点处的值,这个程序没有参数,就没图了。

    gdb命令

    来自: http://man.linuxde.net/gdb

    展开全文
  • 一、Hello, world!在linux下输入:(以hello.c为例)首先选中文件要保存的路径(如:cd work)vi hello.c(要编辑的文件名)输入程序:# includeint main(void){p...
  • 十 使用SkyEye构建Linux内核调试环境 1 SkyEye的安装和μcLinux内核编译 2 使用SkyEye调试 3 使用SkyEye调试内核的特点和不足 十一 KDB 1 入门 2 初始化并设置环境变量 3 激活 KDB 4 KDB 命令 5 技巧和诀窍 6 结束语...
  • 嵌入式linux应用程序的开发一般都是在linux里面编写好代码,并用交叉编译器arm-linux-gcc编译好之后再下载到板子上运行。如果建立了远程调试(能够在PC机ubuntu中调试板子中的linux应用程序),这样对于开发程序是...
  • 使用 VS 2019 编写调试 Linux C/C++程序

    万次阅读 热门讨论 2019-04-05 17:59:24
    环境要求 、创建新项目 、配置连接器 、Linux安装远程调试编写调试Linux程序编写Linux多线程程序


    VS 2019安装 :https://blog.csdn.net/ZYZMZM_/article/details/89045810

    首先在安装时我们需要选择 “使用 C++ 的 Linux 开发


    环境要求

    • VS 2019
    • 安装了gcc、g++版本在4.8以上的Linux主机

    接下来讲解一下使用 VS2019 进行Linux程序的编写和调试。

    首先我们创建一个Linux控制台程序

    创建新项目


    开启VS2019后,点击“创建新项目”:

    展开全文
  • Linux下C语言程序调试

    千次阅读 2018-10-04 16:07:11
    Linux调试C语言程序1.编译时添加调试信息2.使用调试命令进行调试gdb调试器语法gdb模式下的命令[^1]**readelf命令**ELF文件类型ELF文件作用ELF文件总体组成选项 1.编译时添加调试信息 使用gcc -g -o [生成...

    1.编译时添加调试信息

    使用gcc -g -o [生成文件名] [源文件名]来编译生成一个带调试信息的可执行文件
    例如:gcc -g -o test.debug test.c

    加上-g选项以后,gcc在编译是会做以下额外的操作:

    1. 创建符号表,符号表包含了程序中使用的变量名称的列表。

    2. 关闭所有的优化机制,以便程序执行过程中严格按照原来的C代码进行

    生成的可执行文件可以用readelf1 命令来显示文件的具体信息。

    2.使用调试命令进行调试

    最常用的是gdb调试器

    gdb调试器

    gdb命令包含在GNU的gcc开发套件中,是功能强大的程序调试器。GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。

    语法

    gdb [选项] [参数]

    • -cd:设置工作目录
    • -q:安静模式,不打印介绍信息和版本信息
    • -d:添加文件查找路径
    • -x:从指定文件中执行GDB指令
    • -s:设置读取的符号表文件

    一般可以直接使用gdb命令进入gdb命令行模式,然后用file [可执行程序] [参数列表] 的方式来打开需要调试的程序,因为这样可以带参数启动程序,而直接gdb [文件名] 将参数带不进去。

    gdb模式下的命令

    • file <文件名>
      加载被调试的可执行程序文件。
      因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。
      示例:(gdb) file gdb-sample
    • r
      Run的简写,运行被调试的程序。
      如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。
      示例:(gdb) r
    • c
      Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。
      (gdb) c
    • b <行号>
    • b <函数名称>
    • b *<函数名称>
    • b <代码地址> d [编号]
      b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。
      其中在函数名称前面加“
      ”符号表示将断点设置在“由编译器生成的prolog代码处”。如果不了解汇编,可以不予理会此用法。 d: Delete breakpoint的简写,删除指定编号的某个断点,或删除所有断点。断点编号从1开始递增。
      示例:(gdb) b 8
      示例:(gdb) b main
      示例:(gdb) b *main
      示例:(gdb) b *0x804835c (gdb) d
    • s, n
      s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数;
      n: 执行一行源程序代码,此行代码中的函数调用也一并执行。 s 相当于其它调试器中的“Step Into (单步跟踪进入)”;
      n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。
      示例:(gdb) s
      示例:(gdb) n
    • si, ni
      si命令类似于s命令,ni命令类似于n命令。所不同的是,这两个命令(si/ni)所针对的是汇编指令,而s/n针对的是源代码。
      示例:(gdb) si
      示例:(gdb) ni
    • p <变量名称>
      Print的简写,显示指定变量(临时变量或全局变量)的值。
      示例:(gdb) p i
      示例:(gdb) p nGlobalVar
      display … undisplay <编号>
      display,设置程序中断后欲显示的数据及其格式。
      例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令
      “display /i $pc”
      其中 $pc 代表当前汇编指令,/i 表示以十六进行显示。当需要关心汇编代码时,此命令相当有用。 undispaly,取消先前的display设置,编号从1开始递增。
      示例:(gdb) display /i $pc (gdb) undisplay 1
    • i
      info的简写,用于显示各类信息,详情请查阅“help i”。
      示例:(gdb) i r
    • q
      Quit的简写,退出GDB调试环境。
      示例:(gdb) q
    • help [命令名称]
      GDB帮助命令,提供对GDB名种命令的解释说明。
      如果指定了“命令名称”参数,则显示该命令的详细说明;如果没有指定参数,则分类显示所有GDB命令,供用户进一步浏览和查询。
      示例:(gdb) help

    readelf命令

    readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示那些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。

    这个程序和objdump提供的功能类似,但是它显示的信息更为具体,并且它不依赖BFD库(BFD库是一个GNU项目,它的目标就是希望通过一种统一的接口来处理不同的目标文件),所以即使BFD库有什么bug存在的话也不会影响到readelf程序。

    运行readelf的时候,除了-v和-H之外,其它的选项必须有一个被指定。

    ELF文件类型

    • 可重定位文件:用户和其他目标文件一起创建可执行文件或者共享目标文件,例如lib*.a文件。
    • 可执行文件:用于生成进程映像,载入内存执行,例如编译好的可执行文件a.out。
    • 共享目标文件:用于和其他共享目标文件或者可重定位文件一起生成elf目标文件或者和执行文件一起创建进程映像,例如lib*.so文件。

    ELF文件作用

    ELF文件参与程序的连接(建立一个程序)和程序的执行(运行一个程序),所以可以从不同的角度来看待elf格式的文件:

    • 如果用于编译和链接(可重定位文件),则编译器和链接器将把elf文件看作是节头表描述的节的集合,程序头表可选。
    • 如果用于加载执行(可执行文件),则加载器则将把elf文件看作是程序头表描述的段的集合,一个段可能包含多个节,节头表可选。
      如果是共享文件,则两者都含有。

    ELF文件总体组成

    elf文件头描述elf文件的总体信息。包括:系统相关,类型相关,加载相关,链接相关。

    • 系统相关表示:elf文件标识的魔术数,以及硬件和平台等相关信息,增加了elf文件的移植性,使交叉编译成为可能。
    • 类型相关就是前面说的那个类型。
    • 加载相关:包括程序头表相关信息。
    • 链接相关:节头表相关信息。

    选项

    • -a
      –all 显示全部信息,等价于 -h -l -S -s -r -d -V -A -I.

    • -h
      –file-header 显示elf文件开始的文件头信息.

    • -l
      –program-headers
      –segments 显示程序头(段头)信息(如果有的话)。

    • -S
      –section-headers
      –sections 显示节头信息(如果有的话)。

    • -g
      –section-groups 显示节组信息(如果有的话)。

    • -t
      –section-details 显示节的详细信息(-S的)。

    • -s
      –syms
      –symbols 显示符号表段中的项(如果有的话)。

    • -e
      –headers 显示全部头信息,等价于: -h -l -S

    • -n
      –notes 显示note段(内核注释)的信息。

    • -r
      –relocs 显示可重定位段的信息。

    • -u
      –unwind 显示unwind段信息。当前只支持IA64 ELF的unwind段信息。

    • -d
      –dynamic 显示动态段的信息。

    • -V
      –version-info 显示版本段的信息。

    • -A
      –arch-specific 显示CPU构架信息。

    • -D
      –use-dynamic 使用动态段中的符号表显示符号,而不是使用符号段。

    • -x
      –hex-dump= 以16进制方式显示指定段内内容。number指定段表中段的索引,或字符串指定文件中的段名。

    • -w[liaprmfFsoR] or
      –debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges] 显示调试段中指定的内容。

    • -I
      –histogram 显示符号的时候,显示bucket list长度的柱状图。

    • -v
      –version 显示readelf的版本信息。

    • -H
      –help 显示readelf所支持的命令行选项。

    • -W
      –wide 宽行输出。

    • @file 可以将选项集中到一个文件中,然后使用这个@file选项载入。


    1. ↩︎
    展开全文
  • Linux下环境配置 Ubuntu16.04下安装环境和SSH g++用来编译,gdb gdbserver用来调试,openssh-server负责远程登陆 sudo apt-get install openssh-server g++ gdb gdbserver 修改ssh登录的配置,即/etc/ssh/sshd_...

    发行版本:Ubuntu16.04

    Linux环境配置

    安装编译调试环境和SSH
    g++用来编译,gdb gdbserver用来调试,openssh-server负责远程登陆

    sudo apt-get install openssh-server g++ gdb gdbserver
    

    修改ssh登录的配置,即/etc/ssh/sshd_config文件,修改为允许root登录,(如果只想用普通用户登陆可以不用修改,但是那样程序的调试运行会受限于普通用户权限)
    注意:这里的sudo前缀不可少,否则接下来的修改无法保存。

    sudo vim /etc/ssh/sshd_config
    

    进入vim编辑,用方向键向下滚动找到PermitRootLogin这项,改为 PermitRootLogin yes
    在这里插入图片描述
    重启ssh服务来让修改生效

    sudo service ssh restart
    

    另外要注意如果是虚拟机Linux,要设置网络为桥接模式以确保Linux拥有一个独立的IP地址,这是远程登陆不可少的。
    如果不会请参照一下其他关于虚拟机网络设置的文章。

    VS2019安装选项

    安装要选中Linux平台

    在新建项目中选中控制台应用
    在这里插入图片描述
    创建完成后自动生成如下
    在这里插入图片描述
    在工具-选项-跨平台中添加远程Linux
    在这里插入图片描述
    主机名输入要登陆的Linux IP,再输入用户名和密码
    在这里插入图片描述
    等待文件同步后,添加成功。
    在这里插入图片描述
    此时运行按钮上已经有我们所登陆的IP地址
    在这里插入图片描述
    在生成的代码中添加一句getchar()来方便观察控制台输出信息

    #include <cstdio>
    
    int main()
    {
        printf("hello from ConsoleApplication1!\n");
        getchar();
        return 0;
    }
    

    点击运行
    在这里插入图片描述
    控制台窗口已经打印输出信息,如果没加阻塞语句(getchar),程序执行结束窗口一闪而过,就看不到程序实时的调试打印信息。
    不加阻塞的话也可以在 调试->Linux控制台 重新打开。

    如果要开发的是库文件文件 可以在项目->属性中修改配置类型
    在这里插入图片描述

    链接库文件

    在实际开发中可能会需要调用各种库文件,以常用的pthread为例
    在 项目->(项目名)属性->链接器->输入->库依赖项中添加
    在这里插入图片描述
    直接输入库名,如果有多个库以分号 ”;“ 分割。
    在这里插入图片描述

    展开全文
  • 搭建嵌入式linux应用程序调试环境

    千次阅读 2015-08-12 21:08:00
    使用gdb搭建嵌入式Linux调试环境,使用网络与开发板通信,调试应用程序 一、下载gdb源码 下载地址:ftp://ftp.gnu.org/gnu/gdb/ 我使用的版本为:gdb-7.7.1.tar.gz 二、编译gdb client (1)tar xvzf gdb-7.7.1.tar...
  • 用vs编写调试linux C++程序

    千次阅读 2017-04-20 20:36:55
    原文地址:阅读英文原文在Windows下用Visual Studio 2017 编写Linux C++ 程序1. 安装VS2017 下载Visual Studio Community ,它对于小型团队是免费的并且是开源的; 安装时勾选Linux development with C++; 2. ...
  • linux_debugger:一个主要用C ++编写linux调试程序
  • Windows上有些小的调试助手软件使用起来很方便,Linux上也想用。还不如何自己写一个,但是会写代码,但并不会设计软件。那么就参考了一款Windows下的名字叫”TCP调试助手”界面进行编写,真正使用到的代码并不多,...
  • linux相关系统下qtcreator调试程序

    千次阅读 2019-11-24 23:54:10
    经过多个项目的编写调试后,找到了qtcreator调试程序的较优方法。 首先我们先从构建项目说起: 创建项目时,首先确认系统(或安装)QT版本,然后在版本内的Debug(Release)选项需要勾选上,参考图1:...
  • 搭建Linux虚拟机并编写简单程序

    万次阅读 多人点赞 2019-05-28 18:25:43
    本篇文章基于教程目的,主要描述Linux的发展历程以及Linux虚拟机搭建、运行方式。 正文: 现在越来越多IT行业公司要求熟练使用Linux平台下的编程技术,因为目前大部分主机使用Linux相关系统(Linux称为内核更确切一些...
  • linux编写代码如何调试

    千次阅读 2019-02-01 18:34:55
    首先我们在调试时需要将 被调试程序 进行编译,编译时要加上-g选项这样相当于debug版本更好调试.(关于优化在程序后加上-O0这是没有优化,加上-O1这是一级优化,加上-O2这是二级优化等等) 接着我们把敲指令 :gdb 加上...
  • Linux编写C程序(非常详细)

    千次阅读 2019-10-06 23:20:11
    用gcc编译器编写C程序(持续更新) 创建一个C文件 我用的是vim,例如创建一个cna.c, 执行 vim cna.c 这里默认是在根目录,如果你要存在其它地方加上相应的路径名, 编写代码 写完代码之后,我们要做一件事,...
  • VS2017 编译调试 Linux 程序

    万次阅读 2018-07-12 22:36:46
    https://blogs.msdn.microsoft.com/vcblog/2017/04/11/linux-development-with-c-in-visual-studio/ 官方文档2: https://blogs.msdn.microsoft.com/vcblog/2018/04/09/intellisense-for-remote-linux-he...
  • Linux是Unix操作系统的一种变种,在Linux编写驱动程序的原理和...在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便.
  • 文章目录安装Redhat8使用VS2019编写调试Linux程序 去官网下载ISO镜像文件,大概在7G左右: 安装Redhat8 1、创建新的虚拟机: 2、下一步,默认即可 3、稍后安装OS 先建立虚拟机,之后再手动引导安装系统。...
  • 如果已经安装Visual Studio 2019,进入控制面板\所有控制面板项\程序和功能找到Visual Studio然后右击更改,选择下面两项后 2.SSH 在linux终端运行sudo apt-get install ssh 3.创建工程 找到 4.设置远程连接 创建...
  • Linux下gdb调试程序及举例

    千次阅读 2016-07-09 11:21:55
    1、三大功能:①启动被调试程序  ②让被调试程序在指定位置停止  ③当程序被停止时,可以检查程序中所发生的事 2、调试:  运用gcc调试时,在编译时用gcc -g demo.c -o demo将demo.c生成demo文件    ...
  • Linux(Ubuntu版)下编写运行C语言程序

    万次阅读 多人点赞 2018-02-21 21:16:42
    但在Linux系统里,需要熟练掌握在Terminal里编写C语言程序,进行编译调试。本章主要介绍在Linux的终端下编写C程序并编译运行。一,编写C时需要掌握的一些Linux操作(1)文件管理相关的命令Linux命令名称作用使用举例...
  • 如何用linux系统编写c程序

    万次阅读 多人点赞 2016-10-12 10:28:54
    [TOC]为什么要写这一篇博客因大一上学期老师要求而开始使用linux系统编写c程序,而linux编写的模式与windows差别很大,所以写此文章记录自己的学习历程,也能为初学者提供帮助 (本博客在我学习linux过程将持续更新...
  • Linux应用程序编写,学习本文档后可以达到以下目的: 1、熟悉Linux开发环境 2、掌握简单的Helloworld的编译 3、掌握教学系统中的Linux应用程序调试
  • Linux中C语言调试

    2019-09-11 08:49:51
    1、确保Linux中有GCC 和GDB。如果没有就安装下 。 sudo apt-get install gcc sudo apt-get install gdb 2、编写C文件,确保可编译。(比如:text.c) 3、将调试文件text.c从gcc加载进入gdb中。 gcc -g text.c -...
  • 偷个懒,不安装虚拟机,直接在Windows下开发 ...ARM Linux应用程序。 友情提醒1:本篇适合在嵌入式软件开发已经有一定基础的读者。 1 缘由 在嵌入式行业摸爬滚打了八年有余,一直都没在Linux进行...
  • 下面开始正式配置调试环境 首先在电脑上你习惯的位置新建一个文件夹,用于存放编写的代码,接下来配置好的调试环境,仅会对存放在这一个文件夹以及文件夹的子目录里程序生效! 新建好文件夹后,在vscode界面,点击:...
  • Linux下使用VS Code + CMake 调试c++程序

    千次阅读 多人点赞 2019-04-04 19:39:08
    相关文章:在Linux中使用VS Code编译调试C++项目 基于 Deepin 15.9.3 操作系统 文中使用到的gcc/g++、gdb、makefile、cmake等命令在使用之前需要先安装,安装方法请自行搜索。 cmake入门教程:CMake入门教程 ...
  • 实际需要,在linux上运行大型的C++程序,所以不得不学习一下CMAKE,然后还不得不重新温习一下从源码到可执行程序的整个过程,在这里做一下简单的记录(怪自己太菜总是忘): 一个C/C++从源码到可执行程序: 步骤一:...
  • 程序调试中经常需要串口调试,甚至还需要模拟设备数据回复,甚至串口转网络出去,特意将这些常用功能都做到一个串口调试助手中去。 基本功能: 1:支持16进制数据发送与接收。 2:支持windows下COM9以上的串口通信...
  • Windows下开发、调试Linux C/C++程序

    万次阅读 2017-08-13 11:15:07
    ²使用SecureCRT+UltraEdit(FTP)工具远程编辑、编译(Makefile+gcc)、调试(gdb)Linux程序。 ²Windows 上装Linux虚拟机,在虚拟机上使用Vim、gcc、gdb来编辑、编译、调试。 使用IDE的方式,有: ²Linux装...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 107,290
精华内容 42,916
关键字:

linux编写程序调试

linux 订阅