通过汇编一个简单的C程序,分析汇编代码,理解计算机如何工作

1.简单的c程序如下:             int g(int x) {   return x + 1; }   int f(int x) {   return g(x); }   int main(void) {   return f(1) + 1; } 通过命令 gcc -S -o main.s main.c -m32得到汇编代码,实验截图如下:   ...
分类: 其他 发布时间: 07-27 23:09 阅读次数: 0

c/c++ 语言编译过程

  (1)预编译主要处理宏和头文件,用实际值代替有#define 指令定义的符号以及读入有#include 指令包含的文件内容 (2)编译过程首先将程序汇编成汇编代码(.s 文件,linux下),然后进一步翻译成二进制文件(.o 文件),也就是目标代码 (3)链接过程是链接器会引入标准c/c++函数库中任何被该程序所用到的函数,而且它也可以搜索程序员个人的程序库,将其中需要使用的函数也链...
分类: 其他 发布时间: 07-27 23:09 阅读次数: 0

Linux ftrace 2.1、ftrace的使用

关于Ftrace的使用,最权威的解读就在”Documentation/trace”文件夹下,我们挑选其中最经典的几个文件来进行翻译,加上自己理解的解读。 参考原文:ftrace - Function Tracer 1、背景: Ftrace本来设计作为一个内部的tracer提供给系统的开发者和设计者,帮助他们弄清kernel正在发生的行为。它能够调试分析延迟和性能问题。 Ftrace发展...
分类: 其他 发布时间: 07-27 23:08 阅读次数: 0

Linux ftrace 2.2、trace event的使用

参考原文:Event Tracing 1、Introduction: Tracepoints用来创建event tracing框架,而不需要使用创建模块来注册probe函数。 不是所有的tracpoint都能够使用event tracing系统来跟踪。内核开发者必须提供代码定义信息怎么保存到tracing buffer、已经信息怎么打印出来。 2、 Using Event Trac...
分类: 其他 发布时间: 07-27 23:08 阅读次数: 0

Linux ftrace 2.3、kprobe event的使用

原始的trace event插桩是静态的:使用TRACE_EVENT()定义tracepoint,并且在代码中显式调用tracepoint。而kprobe机制可以实现在内核运行时动态的插桩,利用kprobe机制我们可以动态的插入trace event,实现和静态trace event同样的功能。 参考原文:Kprobe-based Event Tracing 1、Overview 这些e...
分类: 其他 发布时间: 07-27 23:08 阅读次数: 0

Linux ftrace 2.4、uprobe event的使用

uprobe是用户态的探针,它和kprobe是相对应的,kprobe是内核态的探针。uprobe需要制定用户态探针在执行文件中的位置,插入探针的原理和kprobe类似。 参考原文:Uprobe-tracer: Uprobe-based Event Tracing 1、Overview uprobe event类似于kprobe event。在编译内核时配置CONFIG_UPROBE_EV...
分类: 其他 发布时间: 07-27 23:07 阅读次数: 0

Linux ftrace 1.2、trace event

Linux trace中,最基础的就是:function tracer和trace event。鉴于他们搭建的良好的框架(ringbuffer、tracefs),各种trace纷纷投奔而来。 tracer发展出了function、function_graph、irqsoff、preemptoff、wakeup等一系列tracer。 而event也发展出tracepoint、kprobe、upr...
分类: 其他 发布时间: 07-27 23:07 阅读次数: 0

Linux ftrace 1.3、tracer (function、function_graph、irq_off)

如trace event一章的描述,任何一种trace都离不开以下流程: 函数插桩。使用各种插桩方式把自己的trace函数插入到需要跟踪的probe point上; input trace数据。在trace的probe函数被命中时,会存储数据到ringbuffer当中;这里还包括filter和trigger功能; ouput trace数据。用户或者程序需要读出trace数据,根据需要输出ra...
分类: 其他 发布时间: 07-27 23:07 阅读次数: 0

Linux ftrace 1.4、kprobe event

从前面几章看:trace event使用静态tracepoint插桩,function tracer使用“bl _mcount”的插桩点来动态插桩。既然都是插桩,为什么我们不使用功能强大的kprobe机制? kprobe event就是这样的产物。krpobe event和trace event的功能一样,但是因为它采用的是kprobe插桩机制,所以它不需要预留插桩位置,可以动态的在任何位置进行...
分类: 其他 发布时间: 07-27 23:07 阅读次数: 0

Linux ftrace 1.5、syscall event

1、函数插桩 1.1、”events/raw_syscalls/sys_enter”、”events/raw_syscalls/sys_exit” trace event的插桩 在系统调用的出口、入口路径上,系统布置了两个tracepoint格式的trace event。 el0_svc为用户态系统调用的入口,arch\arm64\kernel\entry.S: /* * EL0...
分类: 其他 发布时间: 07-27 23:06 阅读次数: 0

Linux ftrace(目录)

Ftrace从字面上理解=Function trace,但是发展到现在已经不仅仅是function trace而是一个大集合,鉴于其搭建的良好的框架(ringbuffer、tracefs…),各种trace纷纷投奔而来。现在大概分为两大类:tracer、event。 tracer。发展出了function tracer、function_graph tracer、irqsoff tracer、...
分类: 其他 发布时间: 07-27 23:06 阅读次数: 0

反序列化的时候报未找到程序集的错误

问题背景: 客户端为一个winform的exe程序,服务端为webservice。我想在winform按钮事件中调用webservice接口传对象到服务端。 我尝试了第一种方式直接在webservice中创建自定义类,写一个接口参数为自定义类的数组。在客户端添加web引用后可以看到webservice自动生成的代码,发现已经将自定义类都自动生成了,客户端可以直接拿到自定义类赋值以后直接调用we...
分类: 其他 发布时间: 07-27 23:06 阅读次数: 0

外部程序调用WebService,如何调试?如何进断点?

背景: 当我们将一个webservice程序编译好之后,将会在IIS上发布这个webservice。我们可以在网页中浏览这个webservice并可以点击一些方法,当方法的参数为基元类型(比如string,int,当参数为一个对象时就不是基元类型)时,网页上会提供一些输入框给我们输出参数,点击调用按钮,当我们在程序的该方法入口打了断点,这个时候就可以进入断点调试了。 问题: 上述我们的调试是...
分类: 其他 发布时间: 07-27 23:05 阅读次数: 0

webservice接口异步调用

webservice异步调用其实很简单,当客户端添加了webservice的引用之后会由系统自动生成一段代码,这段自动生成的代码中有同步方法和异步方法,还会提供一个异步完成后事件,以便在异步结束后做相关处理。贴一段代码截图就知道了。 每一个红色圈圈代表着一个公开的webservice接口,每个接口代码自动生成了5个方法。调用异步方法的时候: WebService1 service = ne...
分类: 其他 发布时间: 07-27 23:05 阅读次数: 0

翻滚吧,跨域君

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
分类: 其他 发布时间: 07-27 23:03 阅读次数: 0

idea部署Tomcat时 war和war exploded区别

部署tomcat时,会遇到一道选择题 是选择war 还是 war exploded呢?所以,首先我们得先知道他们的区别: 1.war:顾名思义,先打成war包再上传到服务器。这种方式是不支持热部署的 2.war exploded:把文件夹的位置关系上传到服务器,也就是将文件夹中的classes,html等移到Tomcat 部署文件夹中,加载部署。这种方式是支持热部署的,本人一般使用此方式...
分类: 其他 发布时间: 07-27 23:03 阅读次数: 0

idea 添加tomcat/Jetty应用找不到Tomcat/Jetty Server?

添加tomcat应该发现找不到Tomcat Server肿么办,莫慌,咱们一起来设置 File→Settings→Application Servers或者CTRL+ALT+S→Application Servers 点击上图的+就可以添加你需要server了。嘿嘿,是不是很简单呢?设置完毕就可以在Edit Configurations看到server啦 希望对您有所帮助哟...
分类: 其他 发布时间: 07-27 23:02 阅读次数: 0

Idea--Tomcate配置中的On Upate Action 与 On Frame Deactivation的区别

这两个选项的设置,依赖于 项目的部署方式 是 exploded 1、on update action 首先来看 on update action 相关的解释,从字面上理解 就是 手工触发 update 动作的时候 做什么:     update resources ---- 更新静态的资源,比如html,js,css等 运行模式和调试模式都是立即生效。 update classes and r...
分类: 其他 发布时间: 07-27 23:02 阅读次数: 0

idea2018 注册码 License server

1.http://active.chinapyg.com/ 博主亲测 2018.1 和 2018.2都可使用,不过需要网络畅通哦! 2.第二种针对2018.1,需要下载补丁:http://idea.lanyus.com/jar/JetbrainsCrack-2.7-release-str.jar,将补丁放在安装包的/bin路径下,打开idea.exe.vmoptions和idea64.exe....
分类: 其他 发布时间: 07-27 23:02 阅读次数: 0

在Eclipse统计项目的代码行数

1.首先选中需要统计的项目或文件夹,CTREL+H(也可以在Eclipse顶部菜单栏打开Search,然后选择File) 2.勾选使用正则表达式(Regular expression),在搜索文本框输入“\n” ,在文件名规则中输入*或*.java(规则自己定) ,在搜索范围里选中Enclosing projects/Workspace,亲测效果一样 效果如下,注意:此处统计包含注释和空白...
分类: 其他 发布时间: 07-27 23:02 阅读次数: 0