首页 > 其他分享 >聊一聊 .NET高级调试 中必知的符号表

聊一聊 .NET高级调试 中必知的符号表

时间:2024-11-04 10:48:19浏览次数:3  
标签:中必知 符号表 int 聊一聊 static 阶段 var 调试

一:背景

1. 讲故事

在高级调试的旅行中,发现有不少人对符号表不是很清楚,其实简而言之符号表中记录着一些程序的生物特征,比如哪个地址是函数(签名信息),哪个地址是全局变量,静态变量,行号是多少,数据类型是什么 等等,目的就是辅助我们可视化的调试,如果没有这些辅助我们看到的都是一些无意义的汇编代码,逆向起来会非常困难,这一篇我们就来系统的聊一聊。

二:程序编译的四个阶段

1. 案例代码

要想理解符号表,首先需要理解 代码文件 是如何变成 可执行文件 的,即如下的四个阶段。

  • 预处理阶段
  • 编译阶段
  • 汇编阶段
  • 链接阶段

为了能够看到每一个阶段,用 gcc 的相关命令手工推进,并用 chatgpt 写一段测试代码,包含全局变量,静态变量,函数等信息。


#include <stdio.h>
#define PI 3.1415926

int global_var = 10;

void func() {

    static int static_var = 5;

    printf("g

标签:中必知,符号表,int,聊一聊,static,阶段,var,调试
From: https://blog.csdn.net/shengyin714959/article/details/143477890

相关文章

  • 聊一聊Spring中的AOP【XML】【标签解析】
    [!NOTE]**Spring版本:**5.3.27**AspectJ版本:**1.9.22**JDK版本:**1.81、前置说明[!TIP]概念性的东西理解起来都会比较抽象,下面的一些概念可以一扫而过,有个大致印象就行。先学会使用,再分析原理,回过头来再看这些概念就会一一对应上。1.1前置概念1.1.1基础概念AOP(......
  • 聊一聊Spring中的@Import注解
    [!NOTE]**Spring版本:**5.3.27**JDK版本:**1.8一、@Import在何处处理//ConfigurationClassParser/***通过从源类(理解为配置类)中读取注解、成员和方法,获取到完成的配置类*由于一个配置类可能关联其他的配置类等,所以这个方法可能会被调用多次*/protectedfina......
  • 聊一聊Spring中的@Value注解
    [!NOTE]**Spring版本:**5.3.27**JDK版本:**1.81、MyConfig.properties何时被加载解析?2、MyService中的两个@Value何时解析?3、MyService中的两个@Value何时注入属性文件中的值?一、样例服务类packagecom.lazy.snail.service;importorg.springframework.beans.fact......
  • 聊一聊自底向上测试和自顶向下测试的优缺点
    自顶向下的测试是从程序的顶部或初始模块开始。测试开始之后,挑选哪一个后续模块进行增量测试没有唯一正确的方法,唯一的原则是要成为合乎条件的下一个模块,至少一个该模块的从属模块,调用它的模块事先经过了测试。在大多数情况下,自底向上的策略与自顶向下的策略是相对立的。自顶......
  • 聊一聊 C#中有趣的 SourceGenerator生成器
    一:背景1.讲故事前些天在看AOT的时候关注了下源生成器,挺有意思的一个东西,今天写一篇文章简单的分享下。二:源生成器探究之旅1.源生成器是什么简单来说,源生成器是Roslyn编译器给程序员开的一道口子,在这个口子里可以塞入一些自定义的cs代码,让Roslyn编译器在编译代码的时候顺......
  • 聊一聊软件测试的基本原则有哪些
    目录原则1:测试用例中一个必需部分是对预期输出或结果的定义。原则2:程序员应当避免测试自己编写的程序。原则3:编写软件的组织不应当测试自己编写的软件。原则4:应当彻底检查每个测试的执行结果。原则5:测试用例的编写不仅应当根据有效和预期的输入情况,而且也应当根据无效和未......
  • 阿里面试让聊一聊Redis 的内存淘汰(驱逐)策略
    大家好,我是V哥,粉丝小A面试阿里,说被问到Redis的内存淘汰策略的问题,整理这个笔记给他参考,也分享给大家,如果你遇到这个问题,会怎么回答呢?Redis的内存淘汰策略是指当Redis的内存使用量达到设定的上限时,决定哪些数据应该被移除以便为新数据腾出空间的规则。Redis提供了多种......
  • 阿里面试让聊一聊Redis 的内存淘汰(驱逐)策略
    大家好,我是V哥,粉丝小A面试阿里,说被问到Redis的内存淘汰策略的问题,整理这个笔记给他参考,也分享给大家,如果你遇到这个问题,会怎么回答呢?Redis的内存淘汰策略是指当Redis的内存使用量达到设定的上限时,决定哪些数据应该被移除以便为新数据腾出空间的规则。Redis提供了多种内存淘......
  • 聊一聊风险的分析及缓解
    目录一、风险分析二、按照风险发现的频率划分三、项目相关干系人对风险的评估开发人员:项目经理:销售人员:总监和VP:四、风险的化解一、风险分析在软件测试中,我们按照一个常识性的过程来理解风险。哪些事件需要担心?这些事件发生的可能性有多大?一旦发生,对公司产生......
  • 学习笔记 - 知识图谱的符号表示方法
    学习笔记-知识图谱的符号表示方法说明:首次发表日期:2024-09-13个人阅读学习并摘录成笔记知识表示的相关名词定义以下内容摘录自KnowledgeGraphsApplied2.3小节,然后AI翻译+人工润色。实体(Entities)---表示知识的核心概念,其他所有东西都是围绕其构建的。实体可以是......