Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

Linux 内核调试5-UML和Qemu调试模块

Linux 内核调试5-UML和Qemu调试模块

这次来看如何调试内核模块,也就是驱动程序,模块的调试跟普通程序略有不同,不论是内核还是普通应用程序,在连接之后便以得知代码将要加载的位置,用户态程序有虚拟地址映射机制,而内核独占物理内存。内核运行与共享的内核地址空间,所以不能使用相同的线性地址,只能由内核加载模块时指定起始地址,模块中都以此为偏移运行。所以内核的调试不能使用普通的方式,需要知道模块的加载地址。而且Qemu的调试原理与UML相似,也可用相同的方法进行模块的调试,这里仅以UML模块调试举例首先...
Linux 内核调试6-使用KGDB双机调试

Linux 内核调试6-使用KGDB双机调试

虽然使用UML或者Qemu可以调试Linux内核,但UML和Qemu毕竟是一个模拟,调试硬件驱动总是用虚拟硬件总不成事,而且Qemu据传闻 对于时钟和中断的处理也有问题,所以对于处理真实硬件的问题,最完美的调试方式就是双机调试,被调试内核在完全真实的环境中运行,排除虚拟机制的不稳定因素,而且使用内核自带的KGDB机制,更具有可靠性,类似Windows下的WinDbg调试方式。这里使用VirtualBox虚拟机进行调试,但所提 及的方法完全适用于诸如VMWa...
Objective-C语法之KVO的使用

Objective-C语法之KVO的使用

简介:上篇我们讲到了KVC(见 http://www.linuxidc.com/Linux/2012-07/66456.htm),这篇我们学习KVO,全名为:Key Value Observing,直译为:基于键值的观察者。那它有什么用呢?KVO主要用于视图交互方面,比如界面的某些数据变化了,界面的显示也跟着需要变化,那就要建立数据和界面的关联。ObjC中提供的KVO就是解决这种问题的。以下用显示页面观察学生的课程名称变化的例子来说明KVO的使用。学生类命...
String.Format 源字符串包含大括号的小问题

String.Format 源字符串包含大括号的小问题

在使用String.Format()的过程中,一直没有遇到这种类型的问题,直到在写一个小sample的过程中,需要动态生成一段javascript代码并且通过ScriptManager.RegisterCliemtScriptBlock方法将其注册到前台,这里使用String.Format来区分动态和静态部分,并且生成最终的脚本代码。在编程中发现带有“{”和“}”符号的脚本代码在String.format()过程中会报错,提示输入字符串不正确。反复检查了j...
Qt creator 不同类 之间参数的传递

Qt creator 不同类 之间参数的传递

Qt creator 方法一:使用extern 传递参数args三个文件 a.h a.cpp 和 b.cpp1、在a.cpp 中定义参数 int args;2、在a.h 中继承参数extern int args;3、在b.cpp 中添加#include "a.h"然后你就能使用args 这个参数了,这个办法项目qt 中的Signal 和 Slot 来说的有点,就是他不需要你实时触发,只需要你最后监听args 的值,然后产生相应的动作就行。情况2, 在主界面...
Android中不被硬件加速支持的操作

Android中不被硬件加速支持的操作

开启硬件加速之后,Android中的2D渲染管道可以支持绝大部分常用的Canvas的绘画操作函数以及那些很少被使用的操作函数。所有的那些用来呈现Android中的应用程序的绘画操作、默认的部件和布局以及常见的高级视觉效果(比如反射和纹理)都被支持。以下列表是已知的不被硬件加速所支持的操作:* Canvas ** clipPath() ** clipRegion() ** drawPicture() ** drawTextOnPath() ** drawVe...
Android getWidth() getHeight() 方法返回的值为0

Android getWidth() getHeight() 方法返回的值为0

使用一个view的getWidth() getHeight() 方法来获取该view的宽和高,返回的值却为0。如果这个view的长宽很确定不为0的话,那很可能是你过早的调用这些方法,也就是说在这个view被加入到rootview之前你就调用了这些方法,返回的值自然为0.解决该问题的方法有很多,主要就是延后调用这些方法。可以试着在onWindowFocusChanged()里面调用这些方法。以下是stack overflow中的回答。Anyhow, the ...
Android 4.1 强制使用720dp的布局

Android 4.1 强制使用720dp的布局

机器升级为Android 4.1,10寸的平板跟以前的布局没有什么两样,但是7寸的就出了点问题。谷歌Nexus 7也是7寸,默认使用的layout跟手机有些相似,但不全是手机布局。Nexus 7是1280 x 800,DPI 为213,这样经过计算,宽度换算为DP就是800 * 160 / 213 = 600; 4.1中对于600 ~ 719 dp的分辨率使用一种新的布局,姑且叫做Phone Tablet吧。我们的平板是1024 x 600分辨率。DPI ...
Spring拦截器执行了两次

Spring拦截器执行了两次

今天在调试代码的时候,发现有个拦截器被执行了两次,很是奇怪,开始以为是即配置了注解的方式,同时又配置了xml配置文件造成的问题,可是仔细检查后并没有配置注解,只配置了xml文件。还是采用老办法,在log4j.properties文件中加入如下一句话,打开Spring的日志级别为Info(如果还是看不到有用的调试信息,则把日志级别调整为DEBUG)log4j.category.org.springframework=INFO, A1, A2重新启动应用,可以...
Struts2中的通配符设置

Struts2中的通配符设置

相比于动态方法调用,Struts的通配符调用方法更是碉堡了。不仅可以根据传入的参数动态的调用方法,更可以根据传入的参数动态的调用相对应的类和转向的页面,只要在开发之前定义好命名规则,约定优于配置,下面我们来看一个简单的例子首先还是类代码packagecom.bird.test;importcom.opensymphony.xwork2.ActionSupport;publicclassIndexActionextendsActionSupport{priv...
Struts2的动态方法调用DMI

Struts2的动态方法调用DMI

在写Struts的Action类的时候,经常遇到不希望每次调用的都是execute方法,希望能动态的调用一些其他的方法,这里Struts提供了两种方式,第一种是在strust.xml中进行method这个属性的配置,但是这样每次只能配置一个,而且是死值,不方便动态的更换和调用,所以这里介绍DMI,动态的方法的调用。下面我们先写出来Actionpackagecom.bird.test;importcom.opensymphony.xwork2.ActionS...
<< 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 >>