当前位置: 首页 > news >正文

Linux 调试 (objdump/strace/strings)

目录

  • 1. Linux 调试 (objdump/strace/strings)
    • 1.1. 查看系统 glibc 版本号
    • 1.2. 查看 so/bin 中的依赖
    • 1.3. 调试 bin 报错原因
    • 1.4. 查看 so/bin 中字符串

1. Linux 调试 (objdump/strace/strings)

1.1. 查看系统 glibc 版本号

1. 第一种
# ldd --version
ldd (Ubuntu GLIBC 2.27-3ubuntu1) 2.27
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.2. 第二种
# ls -alh /lib/x86_64-linux-gnu/libc.so.6 
lrwxrwxrwx 1 root root 12 Apr 17  2018 /lib/x86_64-linux-gnu/libc.so.6 -> libc-2.27.so
注意:libc-2.27.so :版本号即 2.27# strings /lib/x86_64-linux-gnu/libc-2.27.so |grep -in5 versionGNU C Library (Ubuntu GLIBC 2.27-3ubuntu1) stable release version 2.27.
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.3. 第三种
//glibc_version.c
#include <stdio.h>
#include <gnu/libc-version.h>
int main(void)
{printf("glic_version = %s\n",gnu_get_libc_version());return 0;
}
# gcc glibc_version.c
# ./a.out
glic_version = 2.27

1.2. 查看 so/bin 中的依赖

# objdump
Usage: objdump <option(s)> <file(s)>Display information from object <file(s)>.At least one of the following switches must be given:-a, --archive-headers    Display archive header information-f, --file-headers       Display the contents of the overall file header-p, --private-headers    Display object format specific file header contents-P, --private=OPT,OPT... Display object format specific contents-h, --[section-]headers  Display the contents of the section headers-x, --all-headers        Display the contents of all headers-d, --disassemble        Display assembler contents of executable sections-D, --disassemble-all    Display assembler contents of all sections-S, --source             Intermix source code with disassembly-s, --full-contents      Display the full contents of all sections requested-g, --debugging          Display debug information in object file-e, --debugging-tags     Display debug information using ctags style-G, --stabs              Display (in raw form) any STABS info in the file-W[lLiaprmfFsoRtUuTgAckK] or--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=gdb_index,=trace_info,=trace_abbrev,=trace_aranges,=addr,=cu_index,=links,=follow-links]Display DWARF info in the file-t, --syms               Display the contents of the symbol table(s)-T, --dynamic-syms       Display the contents of the dynamic symbol table-r, --reloc              Display the relocation entries in the file-R, --dynamic-reloc      Display the dynamic relocation entries in the file@<file>                  Read options from <file>-v, --version            Display this program's version number-i, --info               List object formats and architectures supported-H, --help               Display this information# objdump -x test| grep NEED

1.3. 调试 bin 报错原因

#  strace -h
usage: strace [-CdffhiqrtttTvVwxxy] [-I n] [-e expr]...[-a column] [-o file] [-s strsize] [-P path]...-p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]or: strace -c[dfw] [-I n] [-e expr]... [-O overhead] [-S sortby]-p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]Output format:-a column      alignment COLUMN for printing syscall results (default 40)-i             print instruction pointer at time of syscall-k             obtain stack trace between each syscall (experimental)-o file        send trace output to FILE instead of stderr-q             suppress messages about attaching, detaching, etc.-r             print relative timestamp-s strsize     limit length of print strings to STRSIZE chars (default 32)-t             print absolute timestamp-tt            print absolute timestamp with usecs-T             print time spent in each syscall-x             print non-ascii strings in hex-xx            print all strings in hex-y             print paths associated with file descriptor arguments-yy            print protocol specific information associated with socket file descriptorsStatistics:-c             count time, calls, and errors for each syscall and report summary-C             like -c but also print regular output-O overhead    set overhead for tracing syscalls to OVERHEAD usecs-S sortby      sort syscall counts by: time, calls, name, nothing (default time)-w             summarise syscall latency (default is system time)Filtering:-e expr        a qualifying expression: option=[!]all or option=[!]val1[,val2]...options:    trace, abbrev, verbose, raw, signal, read, write, fault-P path        trace accesses to pathTracing:-b execve      detach on execve syscall-D             run tracer process as a detached grandchild, not as parent-f             follow forks-ff            follow forks with output into separate files-I interruptible1:          no signals are blocked2:          fatal signals are blocked while decoding syscall (default)3:          fatal signals are always blocked (default if '-o FILE PROG')4:          fatal signals and SIGTSTP (^Z) are always blocked(useful to make 'strace -o FILE PROG' not stop on ^Z)Startup:-E var         remove var from the environment for command-E var=val     put var=val in the environment for command-p pid         trace process with process id PID, may be repeated-u username    run command as username handling setuid and/or setgidMiscellaneous:-d             enable debug output to stderr-v             verbose mode: print unabbreviated argv, stat, termios, etc. args-h             print help message-V             print version# strace -f ./test    

1.4. 查看 so/bin 中字符串

# strings -h
Usage: strings [option(s)] [file(s)]Display printable strings in [file(s)] (stdin by default)The options are:-a - --all                Scan the entire file, not just the data section [default]-d --data                 Only scan the data sections in the file-f --print-file-name      Print the name of the file before each string-n --bytes=[number]       Locate & print any NUL-terminated sequence of at-<number>                   least [number] characters (default 4).-t --radix={o,d,x}        Print the location of the string in base 8, 10 or 16-w --include-all-whitespace Include all whitespace as valid string characters-o                        An alias for --radix=o-T --target=<BFDNAME>     Specify the binary file format-e --encoding={s,S,b,l,B,L} Select character size and endianness:s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit-s --output-separator=<string> String used to separate strings in output.@<file>                   Read options from <file>-h --help                 Display this information-v -V --version           Print the program's version number
strings: supported targets: elf64-x86-64 elf32-i386 elf32-iamcu elf32-x86-64 a.out-i386-linux pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big pe-x86-64 pe-bigobj-x86-64 pe-i386 plugin srec symbolsrec verilog tekhex binary ihex
Report bugs to <http://www.sourceware.org/bugzilla/># stirngs -a test.so |grep conf --color

相关文章:

Linux 调试 (objdump/strace/strings)

目录 1. Linux 调试 (objdump/strace/strings)1.1. 查看系统 glibc 版本号1.2. 查看 so/bin 中的依赖1.3. 调试 bin 报错原因1.4. 查看 so/bin 中字符串 1. Linux 调试 (objdump/strace/strings) 1.1. 查看系统 glibc 版本号 1. 第一种 # ldd --version ldd (Ubuntu GLIBC 2.…...

CAS 单点登录详解

什么是CAS&#xff1f; - 简要介绍CAS&#xff08;Central Authentication Service&#xff09;的概念和作用。 - 强调CAS的主要目标是提供单点登录和单点登出功能。 CAS的工作原理 - 深入探讨CAS的工作原理&#xff0c;包括认证、票据、验证等核心概念。 - 详细解释CAS服务器和…...

tbh常用的绘图快捷键

1、Altb -> 笔刷 2、Alt/ -> 画笔 3、按住Shift 绘出的线条是直线 4、按住shiftalt 绘出来的线条是水平线或垂直线 5、alte ->橡皮擦 6、alts ->选择工具 7、altq -> 轮廓编辑器 以下操作都是在选中轮廓编辑器下操作的&#xff1a; 按住alt…...

Android-Framework 清除应用用户数据,不清除权限

一、环境 高通865 Android 10 二、具体详情 现象&#xff1a;默认赋予第三方应用的权限&#xff0c;在应用信息中清理用户数据的时候&#xff0c;权限也会被清理掉; 希望&#xff1a;只清理数据&#xff0c;保留权限 相关源码修改如下&#xff1a; frameworks/base/servi…...

CS认证办理流程,CS认证好处

CS资质全名叫“信息系统建设和服务能力评估体系” 所谓的CS认证&#xff0c;是指信息系统建设和服务能力评级。认证一共划分为五个等级&#xff0c;等级从低到高分别用CS1级&#xff08;初始级&#xff09;、CS2级&#xff08;基本级&#xff09;、CS3级&#xff08;良好级&…...

macOS 安装brew

参考链接&#xff1a; https://mirrors4.tuna.tsinghua.edu.cn/help/homebrew/ https://www.yii666.com/blog/429332.html 安装中科大源的&#xff1a; https://zhuanlan.zhihu.com/p/470873649...

H5: 使用Web Audio API播放音乐

简介 记录关于自己使用 Web Audio API 的 AudioContext 播放音乐的知识点。 需求分析 1.列表展示音乐&#xff1b; 2.上/下一首、播放/暂停/续播&#xff1b; 3.播放模式切换&#xff1a;循环播放、单曲循环、随机播放&#xff1b; 4.播放状态显示&#xff1a;当前播放的音乐…...

Parasoft C/C++test:汽车网络安全ISO 21434最佳实践

为什么汽车网络安全很重要Why Automotive Cybersecurity Is Important 许多汽车公司向电子道路车辆的转变从根本上改变了整个行业&#xff0c;提高了汽车的互联性和智能性。随着电子汽车变得更加互联和智能&#xff0c;它们也越来越依赖软件来实现车辆操作&#xff0c;驱动更多…...

如何卸载干净 IDEA(图文讲解)windows和Mac教程

大家好&#xff0c;我是sun~ 很多小伙伴会问 Windows / Mac 系统上要怎么彻底卸载 IDEA 呢&#xff1f; 本文通过图片文字&#xff0c;详细讲解具体步骤&#xff1a; 如何卸载干净 IDEA&#xff08;图文讲解&#xff09; Windows1、卸载 IDEA 程序2、注册表清理3、残留清理 M…...

Docker搭建Gitlab

拉取镜像&#xff1a;docker pull gitlab/gitlab-ce创建映射目录&#xff1a; mkdir -p /usr/local/gitlab/config mkdir -p /usr/local/gitlab/data mkdir -p /usr/local/gitlab/logs运行容器&#xff1a; docker run -d -p 443:443 -p 8000:8000 -p 222:22 --name gitlab …...

STM32F4X SDIO(四) SDIO控制器

STM32F4X SDIO&#xff08;四&#xff09; SDIO控制器 STM32F4X SDIO控制器SDIO控制器框图SDIO控制器时钟适配器寄存器FIFO控制单元命令路径数据路径 SDIO寄存器SDIO控制相关寄存器SDIO电源控制寄存器 (SDIO_POWER)SDIO时钟控制寄存器 (SDIO_CLKCR)SDIO_CK相位 SDIO命令响应相关…...

【flink】Task 故障恢复详解以及各重启策略适用场景说明

文章目录 一. 重启策略种类&#xff08;Restart Strategies&#xff09;1. Fixed Delay Restart Strategy2. Failure Rate Restart Strategy3. Fallback Restart Strategy4. No Restart Strategy 二. 故障恢复策略&#xff08;Failover Strategies&#xff09;1. &#xff08;全…...

一个计算机高手的成长3

这是转在茶余的帖子。文中绝大部分技术术语我不懂&#xff0c;所以无资格评论他的技术价值。但文章强烈的逻辑说服力&#xff0c;和通篇流露的进取精神&#xff0c;使我觉得这是篇有价值的帖子&#xff0c;至少值得一读。 就像我开始从MIS转到通信一样&#xff0c;我看过大量通…...

2023应届生能力考试含解析(Java后端开发)——(1)

1.以下代码的循环次数是 ( ) public class Test {public static void main(String[] args) {int i 7;do {System.out.println(--i);--i;} while (i ! 0);System.out.println(i);} } A 0 B 1 C 7 D 无限次 这段代码会导致无限循环的原因是在 do-while 循环中&#…...

Ansible中的任务执行控制

循环 简单循环 {{item}} 迭代变量名称 loop: - value1 - value2 - ... //赋值列表{{item}} //迭代变量名称循环散列或字典列表 - name: create filehosts: host1tasks:- name: file moudleservice:name: "{{ item.name }}"state: "{{…...

利用maven的dependency插件分析工程的依赖

dependency:analyze https://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html 分析项目的依赖&#xff0c;确定哪些&#xff1a;用了并且声明了、用了但没有声明、没有使用但声明了。 dependency:analyze可以单独使用&#xff0c;所以它总是会执行test-…...

【广州华锐互动】VR野外求生技能学习,让你感受真实的冒险之旅!

随着科技的迅速发展&#xff0c;虚拟现实(VR)技术为人们提供了一个全新的、身临其境的探险体验。通过将用户带入一个仿真的、沉浸式的虚拟环境&#xff0c;VR互动体验让人们在安全的氛围中感受到野外探险的乐趣。本文将从视觉呈现、沉浸式体验、交互性和应用范围四个方面&#…...

k8s、调度约束

Kubernetes 是通过 List-Watch **** 的机制进行每个组件的协作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦 用户是通过 kubectl 根据配置文件&#xff0c;向 APIServer 发送命令&#xff0c;在 Node 节点上面建立 Pod 和 Container。 APIS…...

Redis的介绍,以及Redis的安装(本机windows版,虚拟机Linux版)和Redis常用命令的介绍

目录 一. Redis简介 二. Redis的安装 2.1 Linux版安装 2.2 windows版安装 三. Redis的常用命令 一. Redis简介 Redis是一个开源&#xff08;BSD许可&#xff09;&#xff0c;内存存储的数据结构服务器&#xff0c;可用作数据库&#xff0c;高速缓存和消息队列代理。 它…...

电子器件 MOS管的参数、选型与使用技巧

一、电路符号 MOS管分为 G&#xff08;栅极&#xff09;、S&#xff08;源极&#xff09;、D&#xff08;漏极&#xff09; 三极&#xff0c;在图中 S 极有两条线&#xff0c;D 极只有一条线。 1.1 NMOS 和 PMOS 下图中&#xff0c;左侧是 PMOS&#xff0c;右侧是 NMOS。箭头…...

ComfyUI-KJNodes:重构AI创作工作流的效率革命

ComfyUI-KJNodes&#xff1a;重构AI创作工作流的效率革命 【免费下载链接】ComfyUI-KJNodes Various custom nodes for ComfyUI 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes 一、挑战引入&#xff1a;当AI创作遇上效率瓶颈 在AI图像创作领域&#xf…...

Flink学习笔记:窗口

简介 langchain中提供的chain链组件&#xff0c;能够帮助我门快速的实现各个组件的流水线式的调用&#xff0c;和模型的问答 Chain链的组成 根据查阅的资料&#xff0c;langchain的chain链结构如下&#xff1a; $$Input \rightarrow Prompt \rightarrow Model \rightarrow Outp…...

从“概要”到“详细”:实测CoCode AI如何接力完成软件设计全流程(附避坑指南)

从“蓝图”到“代码”&#xff1a;AI驱动微服务设计的全流程实战解析 当我在上个月接手一个电商平台的用户积分系统重构项目时&#xff0c;面对两周内交付完整技术方案的时间压力&#xff0c;第一次尝试用AI工具完成从需求分析到详细设计的全流程。这个过程中&#xff0c;AI不仅…...

一天一个开源项目(第57篇):Unsloth - 2x 更快、70% 更省显存的 LLM 微调库

引言 “Train gpt-oss, DeepSeek, Gemma, Qwen & Llama 2x faster with 70% less VRAM!” 这是「一天一个开源项目」系列的第 57 篇文章。今天介绍的项目是 Unsloth&#xff08;GitHub&#xff09;。 想在自己的 GPU 上微调大模型&#xff0c;却苦于显存不足、训练太慢&am…...

手把手教你用AI手势识别镜像:上传图片秒出彩虹骨骼图

手把手教你用AI手势识别镜像&#xff1a;上传图片秒出彩虹骨骼图 1. 快速了解AI手势识别镜像 今天要介绍的是一个非常实用的AI工具——基于MediaPipe Hands模型的手势识别镜像。这个工具最大的特点就是简单易用&#xff0c;你只需要上传一张包含手部的图片&#xff0c;它就能…...

零基础搭建知识库:5分钟部署通义千问3-Embedding-4B向量模型

零基础搭建知识库&#xff1a;5分钟部署通义千问3-Embedding-4B向量模型 1. 引言&#xff1a;为什么选择Qwen3-Embedding-4B&#xff1f; 想象一下&#xff0c;你手头有大量文档、报告或网页内容&#xff0c;想要快速建立一个能理解语义的智能知识库。传统的关键词搜索已经无…...

OptiScaler完全指南:如何为你的游戏解锁跨厂商上采样技术

OptiScaler完全指南&#xff1a;如何为你的游戏解锁跨厂商上采样技术 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler 还在为游戏中…...

Stable Yogi 模型SolidWorks插件概念设计:AI生成皮革产品3D建模贴图

Stable Yogi 模型SolidWorks插件概念设计&#xff1a;AI生成皮革产品3D建模贴图 最近和几位做工业设计的朋友聊天&#xff0c;他们提到一个挺有意思的痛点&#xff1a;在SolidWorks里建好一个皮包或者皮靴的3D模型后&#xff0c;想看看不同材质、不同纹理的效果&#xff0c;比…...

麒麟系统openkylin性能调优实战:Unixbench跑分从100到900的完整指南

麒麟系统OpenKylin性能调优实战&#xff1a;UnixBench跑分从100到900的完整指南 在国产操作系统逐渐成熟的今天&#xff0c;OpenKylin作为麒麟家族的重要成员&#xff0c;其性能表现越来越受到开发者和系统管理员的关注。UnixBench作为经典的Unix-like系统性能测试工具&#xf…...

OpenClaw低代码方案:Qwen3-32B将Excel需求转为自动化流程

OpenClaw低代码方案&#xff1a;Qwen3-32B将Excel需求转为自动化流程 1. 从Excel到ERP的自动化困境 上周市场部的同事又来找我帮忙了。他们每天要手动将几十份Excel表格里的客户订单录入到公司老旧的ERP系统里——这个上世纪风格的绿色界面软件&#xff0c;既没有批量导入功能…...