Linux c 开发 - 常用Linux下c语言调试方法

Python爬虫实战:5分钟搞定Web of Science文献批量导出与解析(附完整代码) 本文提供了一套利用Python爬虫技术,快速实现Web of Science文献批量提取与解析的完整方案。通过解析官方导出的HTML文件,结合BeautifulSoup和pandas库,可将文献数据自动转换为结构化的Excel/CSV表格,帮助科研人员高效管理文献信息,节省大量手动整理时间。 阅读详情

目录

一、dmesg

二、ldd

三、core文件

四、pstack


本文主要总结一下Linux下调试c语言进程的常用方法。

一、dmesg


dmesg主要用于在进程崩溃掉的时候,显示内核的相关信息。

dmesg | tail -f   #打印当前信息
dmesg -c #打印后,清除缓冲区内容
dmesg -s 1024 #定义缓冲区大小

 

[root@localhost togo]# dmesg | tail -f
[   11.859146] sr 1:0:0:0: Attached scsi generic sg1 type 5
[   12.291406] ip_tables: (C) 2000-2006 Netfilter Core Team
[   12.380055] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[   12.417066] ip6_tables: (C) 2000-2006 Netfilter Core Team
[   12.493635] Ebtables v2.0 registered
[   12.525655] Bridge firewalling registered
[   12.907898] e1000: eno16777736 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[   12.910863] IPv6: ADDRCONF(NETDEV_UP): eno16777736: link is not ready
[   12.911492] IPv6: ADDRCONF(NETDEV_CHANGE): eno16777736: link becomes ready
[   16.225872] Ebtables v2.0 unregistered

二、ldd


ldd命令主要查看进程依赖的共享链接库。

#Togo依赖了线程库和libevent的库

[root@localhost togo]# ldd ./togo
	linux-vdso.so.1 =>  (0x00007ffff374b000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa06c8d6000)
	libevent-2.0.so.5 => /lib64/libevent-2.0.so.5 (0x00007fa06c68e000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fa06c2cc000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fa06cafc000)

三、core文件


当程序偶发性崩溃的时候,我们可以借助系统的core dump来查看崩溃时候的错误信息。排查段错误等异常信息非常给力。

开启core dump,首选需要设置ulimit

[root@localhost togo]# ulimit -c unlimited

一般情况下,core dump后的文件会在当前目录,也有可能是统一的core dump目录。统一目录可以查

[root@localhost home]# cat  /proc/sys/kernel/core_pattern
/tmp/core-%e-%s-%u-%g-%p-%t


使用gdb命令调试:

[root@localhost home]# gdb ./main ./core-main-11-0-0-3424-1451986509 
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-51.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/main...(no debugging symbols found)...done.
[New LWP 3424]
Core was generated by `./main'.
Program terminated with signal 11, Segmentation fault.
#0  0x0000000000400500 in main ()
Missing separate debuginfos, use: debuginfo-install glibc-2.17-55.el7_0.1.x86_64
(gdb) where
#0  0x0000000000400500 in main ()
(gdb) quit

输入where可以迅速查看异常的位置;输入quit迅速退出。

四、pstack


pstack一般查看线程。对于多线程c程序,容易引起死锁,使用pstack来检查是否有死锁情况。

#Togo有9个线程,一个是主线程,一个监听线程,8个libevent的epoll wait

[root@localhost home]# ps -ef | grep togo
root      2999     1  8 16:14 ?        00:08:16 ./togo
root      3518  2851  0 17:51 pts/0    00:00:00 grep --color=auto togo
[root@localhost home]# pstack 2999
Thread 10 (Thread 0x7f6f75079700 (LWP 3000)):
#0  0x00007f6f79bba5f3 in epoll_wait () from /lib64/libc.so.6
#1  0x00007f6f79ea9803 in epoll_dispatch () from /lib64/libevent-2.0.so.5
#2  0x00007f6f79e953ea in event_base_loop () from /lib64/libevent-2.0.so.5
#3  0x0000000000401d22 in togo_mt_process (args=<optimized out>) at togo_server.c:183
#4  0x00007f6f7a0d4df3 in start_thread () from /lib64/libpthread.so.0
#5  0x00007f6f79bba01d in clone () from /lib64/libc.so.6
Thread 9 (Thread 0x7f6f74878700 (LWP 3001)):
#0  0x00007f6f79bba5f3 in epoll_wait () from /lib64/libc.so.6
#1  0x00007f6f79ea9803 in epoll_dispatch () from /lib64/libevent-2.0.so.5
#2  0x00007f6f79e953ea in event_base_loop () from /lib64/libevent-2.0.so.5
#3  0x000000000040208f in togo_wt_cb (args=<optimized out>) at togo_server.c:338
#4  0x00007f6f7a0d4df3 in start_thread () from /lib64/libpthread.so.0
#5  0x00007f6f79bba01d in clone () from /lib64/libc.so.6
Thread 8 (Thread 0x7f6f6ffff700 (LWP 3002)):
#0  0x00007f6f79bba5f3 in epoll_wait () from /lib64/libc.so.6
#1  0x00007f6f79ea9803 in epoll_dispatch () from /lib64/libevent-2.0.so.5
#2  0x00007f6f79e953ea in event_base_loop () from /lib64/libevent-2.0.so.5
#3  0x000000000040208f in togo_wt_cb (args=<optimized out>) at togo_server.c:338
#4  0x00007f6f7a0d4df3 in start_thread () from /lib64/libpthread.so.0
#5  0x00007f6f79bba01d in clone () from /lib64/libc.so.6
Thread 7 (Thread 0x7f6f6f7fe700 (LWP 3003)):
#0  0x00007f6f79bba5f3 in epoll_wait () from /lib64/libc.so.6
#1  0x00007f6f79ea9803 in epoll_dispatch () from /lib64/libevent-2.0.so.5
#2  0x00007f6f79e953ea in event_base_loop () from /lib64/libevent-2.0.so.5
#3  0x000000000040208f in togo_wt_cb (args=<optimized out>) at togo_server.c:338
#4  0x00007f6f7a0d4df3 in start_thread () from /lib64/libpthread.so.0
#5  0x00007f6f79bba01d in clone () from /lib64/libc.so.6
Thread 6 (Thread 0x7f6f6effd700 (LWP 3004)):
#0  0x00007f6f79bba5f3 in epoll_wait () from /lib64/libc.so.6
#1  0x00007f6f79ea9803 in epoll_dispatch () from /lib64/libevent-2.0.so.5
#2  0x00007f6f79e953ea in event_base_loop () from /lib64/libevent-2.0.so.5
#3  0x000000000040208f in togo_wt_cb (args=<optimized out>) at togo_server.c:338
#4  0x00007f6f7a0d4df3 in start_thread () from /lib64/libpthread.so.0
#5  0x00007f6f79bba01d in clone () from /lib64/libc.so.6
Thread 5 (Thread 0x7f6f6e7fc700 (LWP 3005)):
#0  0x00007f6f79bba5f3 in epoll_wait () from /lib64/libc.so.6
#1  0x00007f6f79ea9803 in epoll_dispatch () from /lib64/libevent-2.0.so.5
#2  0x00007f6f79e953ea in event_base_loop () from /lib64/libevent-2.0.so.5
#3  0x000000000040208f in togo_wt_cb (args=<optimized out>) at togo_server.c:338
#4  0x00007f6f7a0d4df3 in start_thread () from /lib64/libpthread.so.0
#5  0x00007f6f79bba01d in clone () from /lib64/libc.so.6
Thread 4 (Thread 0x7f6f6dffb700 (LWP 3006)):
#0  0x00007f6f79bba5f3 in epoll_wait () from /lib64/libc.so.6
#1  0x00007f6f79ea9803 in epoll_dispatch () from /lib64/libevent-2.0.so.5
#2  0x00007f6f79e953ea in event_base_loop () from /lib64/libevent-2.0.so.5
#3  0x000000000040208f in togo_wt_cb (args=<optimized out>) at togo_server.c:338
#4  0x00007f6f7a0d4df3 in start_thread () from /lib64/libpthread.so.0
#5  0x00007f6f79bba01d in clone () from /lib64/libc.so.6
Thread 3 (Thread 0x7f6f6d7fa700 (LWP 3007)):
#0  0x00007f6f79bba5f3 in epoll_wait () from /lib64/libc.so.6
#1  0x00007f6f79ea9803 in epoll_dispatch () from /lib64/libevent-2.0.so.5
#2  0x00007f6f79e953ea in event_base_loop () from /lib64/libevent-2.0.so.5
#3  0x000000000040208f in togo_wt_cb (args=<optimized out>) at togo_server.c:338
#4  0x00007f6f7a0d4df3 in start_thread () from /lib64/libpthread.so.0
#5  0x00007f6f79bba01d in clone () from /lib64/libc.so.6
Thread 2 (Thread 0x7f6f6cff9700 (LWP 3008)):
#0  0x00007f6f79bba5f3 in epoll_wait () from /lib64/libc.so.6
#1  0x00007f6f79ea9803 in epoll_dispatch () from /lib64/libevent-2.0.so.5
#2  0x00007f6f79e953ea in event_base_loop () from /lib64/libevent-2.0.so.5
#3  0x000000000040208f in togo_wt_cb (args=<optimized out>) at togo_server.c:338
#4  0x00007f6f7a0d4df3 in start_thread () from /lib64/libpthread.so.0
#5  0x00007f6f79bba01d in clone () from /lib64/libc.so.6
Thread 1 (Thread 0x7f6f7a4fb740 (LWP 2999)):
#0  0x00007f6f7a0d5f37 in pthread_join () from /lib64/libpthread.so.0
#1  0x00000000004026f5 in togo_server_init () at togo_server.c:103
#2  0x0000000000401b5a in togo_init (argc=1, argv=0x7fffae18a178) at togo_init.c:24
#3  0x00007f6f79ae5af5 in __libc_start_main () from /lib64/libc.so.6
#4  0x00000000004017e1 in _start ()

 

基于jeecgboot3.9.0的项目管理——项目工作台(二) 阅读详情

相关推荐

Pytorch中CrossEntropyLoss()详解

交叉熵主要是用来判定实际的输出与期望的输出的接近程度。举个例子:在做分类训练的时候,如果一个样本属于第 K 类,那么这个类别所对应的输出节点的输出值应该为1,而其他节点的输出都为0,即 [0,0,1,0,….0,0] ,这个数组也就是样本的 Label,是神经网络最期望的输出结果。我们用交叉熵损失函数来衡量网络的实际输出与正确标签的差异,利用这种差异经过反向传播去更新网络参数。交叉熵:它主要刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。

flyingluohaipeng的博客 3861

将你的Rootkit代码注入到一个Linux内核模块

前段时间从完成“实时获取系统中TCP半连接数量”这个永远无法上线的半吊子需求开始,一发不可收拾地栽进了Rootkit深坑,有点走火入魔,写了好多篇这方面的随笔并结识了很多朋友,感觉不错。 前面的系列文章中,大多数都是描述某个技术点的,而你想利用这个技术点做点实际的好事或者坏事,其实还有一段很长距离的路要走,比如: 谁给你的root权限? 你会编程并且编写Linux内核模块吗? 系统中有gcc和m...

TCP/IP 1万+

Android dex, odex, oat, vdex, art文件介绍

下图可以简化将Java源转换为OAT的过程: .dex Dalvik虚拟机字节码文件 .vdex 其中包含APK的未压缩DEX代码,以及一些旨在加快验证速度的元数据 .odex .oat // JIT,Just-in-time,即时编译,边运行边编译; // AOT,Ahead Of Time,提前编译,指运行前编译。 其中包含APK中已经过AOT编译的方法代码。 原始DEX文件(例如classes.dex)被转换为另一个包含本机代码的文件。这个新文件通常具有.odex。.oat扩展名,并由ELF格式

he980725866的博客 3620

Linux故障-CentOS7系统firewall报错"Error: INVALID_ZONE"

虚拟化libvirtd与firewall不兼容导致firewalld报错 ERROR: INVALID_ZONE

极墨 2万+

GEO优化实战:用AnswerBit量化AI搜索可见度与品牌监控体系

生成式引擎优化(GEO)正取代传统SEO,成为品牌在AI搜索生态中获取可见度的关键。当用户习惯从“翻列表”转向“直接问AI”,品牌能否被生成式引擎识别、引用并正向推荐,直接决定了其在用户决策链条中的存在感。AI搜索可见度因此从模糊概念演变为可度量的运营指标,涵盖提及率、引文率、情感分与回源质量等维度。腾讯AnswerBit作为答案侧分析工具,帮助运营者拆解AI回复中的品牌语境与引用来源,让优化动作有据可循。从内容结构化改造、品牌实体建设到第三方权威背书,GEO要求团队建立“度量-优化-再度量”的闭环。文章结

weixin_31100517的博客 150

手把手教你用Docker快速部署开源MES系统(附避坑指南)

本文提供了一份详细的实战指南,手把手教你使用Docker容器化技术快速部署开源MES系统。内容涵盖从环境准备、项目选型、数据库配置到应用服务器优化、前端部署及生产环境监控的全流程,并附有避坑指南,旨在帮助中小制造企业IT人员和开发者低成本、高效率地构建智能制造解决方案。

f0g1h2的博客 1059

11月1日任务

10.32/10.33 rsync通过服务同步 rsync读写文件,总得以系统的某个用户的身份来操作。 就是映射的这个系统用户。 rsync 通过服务的方式同步 要编辑配置文件/etc/rsyncd.conf 启动服务rsync --dae...

894

UE4 GamePlay框架深度解析:从蓝图到C++构建多人游戏核心

在游戏开发与实时交互应用领域,一套清晰、可扩展的底层框架是项目成功的关键。GamePlay框架作为虚幻引擎(UE4/UE5)的核心架构,定义了游戏世界中对象交互、状态管理与网络同步的基本原理。它通过职责分离的设计模式,将游戏规则(GameMode)、全局状态(GameState)、玩家状态(PlayerState)、可操控实体(Pawn/Character)及其控制器(Controller)等核心类有机组织起来,确保了逻辑的清晰性与多人游戏数据的一致性。其技术价值在于为开发者提供了一套经过验证的最佳实践,大

weixin_33924770的博客 617

linux C代码调试命令是,Linux细节 - 常用Linux下c语言调试方法

本文主要总结一下Linux下调试c语言进程的常用方法。1. dmesgdmesg主要用于在进程崩溃掉的时候,显示内核的相关信息。dmesg | tail -f #打印当前信息dmesg -c #打印后,清除缓冲区内容dmesg -s 1024 #定义缓冲区大小[root@localhost togo]# dmesg | tail -f[ 11.859146] sr 1:0:0:0: Att...

weixin_42129300的博客 474

某易将军令口令纯算法还原py篇

算法开源,将军令口令算法。希望官方多多更新吧

任雪飘的博客 3909

【软考】数据库系统工程师备考指南(一)

目录一、数据库系统工程师简介二、考试要求三、考试目标四、考试范围(一)信息系统知识(二)数据库系统设计与管理 一、数据库系统工程师简介 数据库系统工程师考试属于全国计算机技术与软件专业技术资格(水平)考试(简称计算机软件水平资格考试)中的一个中级考试。考试不设学历与资历条件,也不论年龄和专业,考生可根据自己的技术水平选择合适的级别合适的资格,但一次考试只能报考一种资格。考试采用笔试形式,考试实行全国统一大纲、统一试题、统一时间、统一标准、统一证书的考试办法。笔试安排在一天之内。 2022 年数据库系统工程

邓邓子的博客 3859

【Linux】深入内核调试:使用kgdb、kdb等工具调试Linux内核

Linux内核作为操作系统的核心,复杂且庞大。在开发和维护过程中,调试内核是不可避免的任务。本文将详细介绍如何使用kgdb、kdb等工具进行Linux内核调试。希望通过这篇文章,读者能更好地掌握内核调试的技巧和方法。

科技改变人类,技术成就未来 2609

芒果YOLO11改进59:分类损失函数Loss篇FocalLoss:即插即用|最新改进FocalLoss损失函数,提高处理不平衡数据分类场景下的任务性能,提升YOLO11检测精度

即插即用|最新改进FocalLoss损失函数,提高处理不平衡数据分类场景下的任务性能,提升YOLO11检测精度

包括YOLOv5、YOLOv7、YOLOv8等模型改进 548

linux C 语言开发 (一) Window下用gcc编译和gdb调试

在win10系统下,我希望可以练习,gcc和gdb的指令。由于我有QT软件,不需要单独安装mingw530_32,对环境变量进行了配置,实现了gcc和gdb的调试。6 .break 行号 if 条件 当条件为真时,在指定行号断点生效。5 .break 文件名:行号 在指定文件的指定行添加断点。3 .break(b) 函数名 在某函数入口处添加断点。10.next(n) 单步运行程序(不进入子函数)11.step(s) 单步运行程序(进入子函数)4 .break 行号 在指定行添加断点。

ajassi2000的博客 1883

CAS-PEAL R1 人脸数据集

人脸数据子集,JPG格式,学习人脸识别可用数据集,5合1。

STM32H743VIT6 最小系统核心板PDF原理图PCB+AD集成封装库文件.zip

STM32H743VIT6 最小系统核心板PDF原理图PCB+AD集成封装库文件PCB封装库:Component Count : 17Component Name-----------------------------------------------0603-CAPC_0603CRYSTAL-2.5X2.0EIA3216EXBV8VFPC0.5 2H-WS-24PHDR1X4HDR2X22LED_0603LQFP100micro_usbmicro button_2_SMDOSC-SMD_L3.2-W1.5R_0603SOIC-8SOT_223TF原理图库:Library Component Count : 17STM32F746LQFP100SW-PB SwitchTF-SDUSB_MICRO_RIGHT Library: MF_Connectors Description: 5 Pin USB Connectors. SLD is the shield connection. Us

linux C(hello world)程序调试

程序的调试(先得安装gdb工具,以root身份执行命令:sudo apt-get install gdb) 程序的调试是一个很重要的环节,windows IDE下那些强大的调试功能,Linux以什么来对比呢,当然,在我看来,无所不能的linux一样可以胜任调试工作,有过之而无不及,那就是安装开发工具后,另一个集成于linux中的工具,gdb。它是一款由GNU组织开发并发布的UNIX/Linux下...

weixin_33912246的博客 149

matlab实现扩展卡尔曼滤波无人机-无人车协同定位算法-EKF-UAV-UGV-协同定位算法

内容概要:本文详述了基于扩展卡尔曼滤波(EKF)的无人机(UAV)和无人车(UGV)协同定位算法原理,包括状态建模、观测模型、预处理、预测步、更新步、信息融合、循环迭代以及一致性校正等关键步骤。文章提供了MATLAB源码,涵盖了环境准备、代码实现、运行步骤及仿真结果分析。研究结果证明EKF能有效提升定位精度和鲁棒性,同时提出了对未来研究的期望,比如算法性能优化、更多传感器引入、多机器人协同以及实验验证等。适合人群:具备自动化、机器学习和MATLAB基础知识的研发人员及科研工作者。使用场景及目标:本文适合从事无人机和无人车协同作业、环境感知、灾难救援、物流运输等领域的研究人员及工程师。目标是深入理解EKF原理并在实践中提高定位精度和系统鲁棒性。阅读建议:读者应对自动控制系统有一定的理论基础,并且需要掌握MATLAB编程技巧,以便更好地理解和实现文中所提供的算法源码。

VS Code 从入门到实战(Linux 开发工程师版)

Visual Studio Code(VSCode)是微软开发的跨平台轻量级代码编辑器,凭借其灵活的扩展生态和强大的调试功能,成为全球开发者的“效率神器”。本指南专为VSCode小白设计,结合Linux开发场景,从安装到实战,手把手带你掌握核心操作。首先,介绍如何在Linux系统上安装VSCode,支持Debian、RedHat等主流发行版。接着,详细解析VSCode的界面布局,包括活动栏、侧边栏、编辑器区域、状态栏和集成终端。

Mr_-G,一名勤奋底层软件开发工程师的博客 4789

建筑物外墙缺陷数据集(开裂,鼓包,脱皮)

建筑物外墙缺陷数据集,包含开裂,鼓包,脱皮等缺陷,只有部分图像数据

Linux下使用vim编辑C程序

1vi/vim使用 1.1vi/vim简介 vi/vim是Linux、Unix字符界面下常用的编辑工具,也是系统管理员常用的一种编辑工具。很多Linux发行版都默认安装了vi/vim。vim是vi的升级版,和vi的基本操作相同,其相对于vi的优点主要在于可以根据文件类型高亮显示某些关键字,如C语言关键字,便于编程。 vi/vim有两种状态:命令状态和编辑状态。 1)命令状态:可以输入相...

wenson的博客 1万+

Linux下如何用gdb调试程序?

本文详细介绍了在Linux下使用GDB调试C语言程序的完整流程。主要内容包括:如何编译带调试信息的C程序;启动GDB并加载程序的方法;核心调试流程(设置断点、运行程序、查看变量);常用调试命令(单步执行、变量查看、调用栈跟踪等);调试崩溃程序时如何使用CoreDump文件定位问题;以及条件断点、宏定义调试等实用技巧。通过示例程序演示了从设置断点到单步跟踪的全过程,帮助开发者快速掌握GDB调试C程序的关键技术,有效解决程序中的逻辑错误和崩溃问题。

start_up_go的博客 738

【2013-12-17】C语言开发笔记:GDB

整理 Linux 下 GDB 调试 C 程序的常用命令备忘,涵盖编译加 -g 调试信息、设置断点、单步执行、查看变量值、打印调用堆栈等核心操作,以表格形式汇总命令速查。

cstriker1407的专栏 19

C语言开发环境搭建重点知识

C语言的开发环境搭建主要涉及编译器、编辑器或集成开发环境(IDE)的选择和配置。通过以上步骤,可以快速搭建一个高效的C语言开发环境,适用于不同平台和需求。

xtqckk7611p的博客 480

gdb - 调试工具 - 入门 (一)

GDB(GNU Debugger)是GNU项目调试器的缩写,它是Linux下一个强大的C/C++(以及其他语言如Fortran)程序调试工具。

weixin_46325250的博客 2684

Linux下C和C++开发基础

作者 阿江 日期 2009-3-23 4:57:00 基本编程概念  编程语言:C 、C++  编译(compile):源文件(.c)->目标文件(.o)  连接(link):目标文件(.o)->可执行文件  库(library):静态连接库(.a)、动态连接库(.so)   Linux下开发工具 编辑器:vi、emacs、窗口编辑器 编译器:GCC 调试器:GDB

ManFred2ManFred的专栏 366

30分钟上手Linux内核Rust开发:从环境搭建到模块编译实战指南

你还在为C语言内存安全问题头疼?还在担心内核模块开发的复杂性?本文将带你零基础入门Linux内核Rust模块开发,通过实战案例掌握从环境配置到模块加载的完整流程,让你用现代编程语言编写更安全、更可靠的内核代码。 读完本文你将学会: - 配置Linux内核Rust开发环境的3个关键步骤 - 编写第一个Rust内核模块的完整代码示例 - 使用Kbuild构建系统编译Rust模块的方法 - 模块加载与...

gitblog_00604的博客 1160

Linux下编译C语言 | 从编译环境设置到常见问题解决

在Linux环境下,C语言的编译通常依赖于GNU Compiler Collection(GCC),这个工具能够高效地将源代码转换为机器能够执行的程序。例如,在开发一个简单的网页时,除了要懂得HTML、CSS和JavaScript,还需要考虑用户体验、页面响应速度等方面的优化。对于初学者来说,选择一门易于入门的语言,如Python,是一个不错的选择。此外,编程的学习不仅限于书本和教程,更多的是通过参与实际项目来锻炼技能。希望每一个正在学习编程的人,都能通过不断努力,掌握更多的技术,提升自己的职业竞争力。

sucirf_868的博客 237

Linux C语言编译器优化与使用

它为开发者提供了强大的编译和调试功能,支持不同的编译选项和优化技术,使得代码在Linux操作系统上运行更加高效。针对Linux C语言编译器的使用,不仅仅是编写代码,更多的是如何通过配置编译选项来提高程序的性能,减少内存占用,以及如何使用调试工具来定位和修复错误。通过gdb,开发人员可以逐步执行程序,查看每一行代码的执行情况,以及检查变量的值,帮助定位代码中的错误。对于开发者来说,熟悉这些工具,合理配置编译选项,并善于利用调试工具,将会极大地提升代码的质量和运行效率。"程序,进行编译并运行。

axqwuo_073的博客 381

我的Linux笔记之Linux C 的开发环境

Linux C 开发构成编辑器: VI编译器: gcc(full name:GNU c/c++)调试器: gdb函数集: glibc系统头文件:glibc_headerLinux C 下的后缀的意义 .c C源码 .h 头文件 .i 已经预处理的C文件 .o 目标文件 .s 汇编语言的源文件gcc的使用 gcc c源 :直接产生可执行文件所以通常加-o gcc -o hello hello

740
上一篇: 个人总结感想系列 - 2015年总结
下一篇: Linux细节 - 常用Linux下排查服务器性能命令
老码农zhuli
老码农zhuli 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄14年 2456粉丝 312原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值