- 博客(356)
- 资源 (3)
- 收藏
- 关注
转载 GDB查看堆栈变量
查看栈信息—————当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入“栈”(Stack)中。你可以用GDB命令来查看当前的栈中的信息。下面是一些查看函数调用栈信息的GDB命令: backtrace bt 打印当前的函数调用栈的所有信息。如:
2015-02-01 23:11:14 10385
转载 valgrind 详细说明
调不尽的内存泄漏,用不完的ValgrindValgrind 安装1. 到www.valgrind.org下载最新版valgrind-3.2.3.tar.bz22. 解压安装包:tar –jxvf valgrind-3.2.3.tar.bz23. 解压后生成目录valgrind-3.2.34. cd valgrind-3.2.35. 运行./autog
2014-12-12 16:10:47 534
转载 Valgrind的使用方法
Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等。Valgrind可以检测内存泄漏和内存违例,还可以分析cache的使用等,灵活轻巧而又强大,能直穿程序错误的心脏,真可谓是程序员的瑞士军刀。 一、Valgrind的主要功能 Valgrind工具
2014-11-25 17:44:41 488
转载 linux内核部件分析(二)——原子性操作atomic_t
在任何处理器平台下,都会有一些原子性操作,供操作系统使用,我们这里只讲x86下面的。在单处理器情况下,每条指令的执行都是原子性的,但在多处理器情况下,只有那些单独的读操作或写操作才是原子性的。为了弥补这一缺点,x86提供了附加的lock前缀,使带lock前缀的读修改写指令也能原子性执行。带lock前缀的指令在操作时会锁住总线,使自身的执行即使在多处理器间也是原子性执行的。xchg指令不带lock前
2014-09-29 15:48:15 817
转载 Linux 下core文件的使用
转储文件(core dump)本来是在程序运行出错的时候产生的。转储文件记录了进程出错时的内存映像,以及进程执行的上下文环境,如寄存器的值等。它的主要用途是在程序运行崩溃时记录下进程的瞬时情况,从而为找出导致程序崩溃的原因提供宝贵的信息。 如果程序在执行过程中崩溃,在一定的条件下有可能会产生转储文件(常被称为core dump文件),core文件是该进程(异常终止时)的内存映像(同时加
2014-09-29 10:13:47 330
转载 GDB 查看死锁
死锁:一种情形,此时执行程序中两个或多个线程发生永久堵塞(等待),每个线程都在等待被 其他线程占用并堵塞了的资源。例如,如果线程A锁住了记录1并等待记录2,而线程B锁住了记录2并等待记录1,这样两个线程就发生了死锁现象。gdb调试死锁的方法:gdb attach pidthread apply all bt找到_lll_lo
2014-09-17 14:47:17 1414
转载 GDB -- 多线程堆栈
1.死机后,输入: info threads ------- 查看所有thread信息2. thread apply all bt 显示所有的线程堆栈3. thread apply 1 bt 显示所有的线程堆栈
2014-09-17 14:18:49 983
转载 gdb中忽略信号处理 SIGPIPE
GDB调试网络程序时,会遇到SIGPIPE信息,默认GDB会把程序停下来,即使程序使用signal(SIGPIPE, SIG_IGN);来忽略信号。用handle命令设置一下缺省的signal的处理行为即可: handle SIGPIPE nostop print如果连信息提示都不想看见,可以这样设置: handle SIGPIPE nostop noprint
2014-09-16 19:29:47 495
转载 让linux程序后台运行
最近把java web项目部署到weblogic上,一直通过windows端的F-Secure操作服务器,每次启动weblogic使用./startWebLogic.sh,但是发现退出终端后,weblogic也是自动退出,查了资料,发现Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:
2014-09-12 15:53:38 284
转载 用GDB调试程序常用命令
常用的使用命令1)使用GCC编译时加参数 –g 例:gcc tmp01.c –o tmp01 -g2)gdb tmp013)(gdb) l : 查看载入的文件(list)4)(gdb) b 6 : 在第6行处设置断点5)(gdb) info b : 查看设置的断点
2014-09-09 15:18:02 328
转载 gdb调试的layout使用
layout:用于分割窗口,可以一边查看代码,一边测试。主要有以下几种用法:layout src:显示源代码窗口layout asm:显示汇编窗口layout regs:显示源代码/汇编和寄存器窗口layout split:显示源代码和汇编窗口layout next:显示下一个layoutlayout prev:显示上一个layoutCtrl + L:刷新窗口Ctr
2014-09-09 14:54:51 580
转载 Lua在Linux下的安装
本来这个很简单,但常常会偶尔会有问题,也记不住,所以就直接转下来,以后方便遇到的时候解决安装进入官方站点(http://www.lua.org/download.html )下载最新的安装包。当前是 Lua 5.2.0wget -c http://www.lua.org/ftp/lua-5.2.0.tar.gz 解压: tar zxvf
2014-08-29 15:38:50 329
转载 placement new
1. placement new的含义placement new 是重载operator new 的一个标准、全局的版本,它不能够被自定义的版本代替(不像普通版本的operator new 和 operator delete能够被替换)。void *operator new( size_t, void *p ) throw() { return p; }placemen
2014-02-20 17:14:53 395 1
转载 lua模块几种形式
刚学,如果有问题看manual,不多说两个文件说明下testlib.lua在当前目录下,maxmin.lua在当前目录的子目录lualibs下。即./testlib.lua,./lualibs/maxmin.lua测试过没有问题,大致可以清楚的阐述lua中的模块是怎么个样子,下面上代码:testlib.lua[python] view p
2013-12-02 17:32:12 394
转载 lua栈理解及lua和C++的数据交换API介绍
1. 理解lua的栈到底是什么? lua的栈类似于以下的定义, 它是在创建lua_State的时候创建的: [cpp] view plaincopyprint?TValue stack[max_stack_len] // 欲知内情可以查 lstate.c 的stack_init函数 TValue stack[max_stack_
2013-11-18 19:58:33 655
转载 编写高效Lua代码的方法
翻译自《Lua Programming Gems》Chapter 2:Lua Performance Tips:Basic fact By Roberto Ierusalimschy基本知识Lua在运行代码之前,会先把源码翻译(预编译)成一种内部编码,这种编码由一连串的虚拟机能够识别指令构成,与CPU的机器码很相似。接下来由C代码中的一个while循环负责解释这些内部编码,
2013-11-18 17:46:52 937
转载 Lua:字节数组与int互转
converting from bytes to int (taking care of endianness at byte level, and signedness):--------------------------------------------------------------------------------------------require 'struct
2013-04-08 19:54:59 4467
转载 在lua中操作C++对象的字段
luabind中注册一个c++对象,可以将那个对象作为参数传递到lua函数中,或者作为一个c++函数的返回值返回到lua中.并且,在lua中可以直接操作那个C++对象的数据成员.我这几天一直在思考这是怎么实现的,因为对boost不熟悉,所以很难对luabind的源代码作分析.经过了几天翻阅lua文档,终于想到了一个实现的方法. 假设我们有以下
2013-03-28 20:42:55 952
转载 详解如何把C++对象绑定到Lua轻量级
游戏中的使用脚本语言已经成为了一个标准应用。脚本语言能够在游戏开发中扮演一个重要的角色,并且让数据结构化,计划事件,测试和调试这些工作更加容易。脚本语言也能够允许像美术,策划这些非程序专家通过一个高层的抽象脚本来为游戏编写代码。这个抽象层的一部分也能够允许提供给玩家来定制整个游戏。从程序员的角度上来看,把一个脚本语言嵌入到游戏中最主要的问题是如果为脚本语言提供对宿主对象的访问(通常是C/C
2013-03-28 17:56:18 458
转载 腾讯微信技术总监周颢:一亿用户增长背后的架构秘密
微信——腾讯战略级产品,创造移动互联网增速记录,10个月5000万手机用户,433天之内完成用户数从零到一亿的增长过程,千万级用户同时在线,摇一摇每天次数过亿…在技术架构上,微信是如何做到的?日前,在腾讯大讲堂在中山大学校园宣讲活动上,腾讯广研助理总经理、微信技术总监周颢在两小时的演讲中揭开了微信背后的秘密。周颢,2001年毕业于华南理工大学,计算机专业硕士。2005年加入腾讯广州研发部,历任QQ
2012-05-17 09:40:25 788 1
原创 speex编译for ios
speex依赖于libogg,需要先编译libogglibogg:./configure -prefix=/Users/simbi/Desktop/speex/ogg/i386 -host=i386-apple-darwin -build=x86_64-apple-darwin11.3.0 CC="/Developer/Platforms/iPhoneSimulator.platform/
2012-05-10 17:52:53 2910 7
转载 iPhone开发之UISearchBar学习
iPhone开发之UISearchBar学习是本文要学习的内容,主要介绍了UISearchBar的使用,不多说,我们先来看详细内容。关于UISearchBar的一些问题。1、修改UISearchBar的背景颜色UISearchBar是由两个subView组成的,一个是UISearchBarBackGround,另一个是UITextField. 要IB中没有直接操作背景的属性。方法是
2012-04-20 11:41:34 2071
转载 解决NSXmlParser无法解析非utf-8编码的XML问题的方法
ios开发中经常会用到解析XML,但是iOS提供的NSXmlParser只能解析encoding是utf-8的XML文件。即xml文件开头必须是在中文网页中,经常会碰到gb2312或GBK编码的XML文件,如当iphone开发中的NSXMLParser碰到非utf-8编码时,会直接触发parser:parseErrorOccurred:,返回的错误编码是31,之后直
2012-04-16 09:08:50 620
转载 高效SQL语句必杀技
No SQL,No cost. SQL语句是造成数据库开销最大的部分。而不良SQL写法直接导致数据库系统性能下降的情形比比皆是。那么如何才能称得上高效的SQL语句呢?一是查询优化器为当前的SQL语句生成最佳的执行计划,保证数据读写使用最佳路径;二是设置合理的物理存储结构,如表的类型,字段的顺序,字段的数据类型等。本文主要描述如何编写高效的SQL语句并给出示例。下面的描述主要分为三个部分,一
2012-04-05 09:12:32 453
转载 SQLite在多线程环境下的应用
这几天研究了一下SQLite这个嵌入式数据库在多线程环境下的应用,感觉里面的学问还挺多,于是就在此分享一下。先说下初衷吧,实际上我经常看到有人抱怨SQLite不支持多线程。而在iOS开发时,为了不阻塞主线程,数据库访问必须移到子线程中。为了解决这个矛盾,很有必要对此一探究竟。关于这个问题,最权威的解答当然是SQLite官网上的“Is SQLite threadsafe?”这个问
2012-04-01 17:04:57 953
转载 iOS并发编程指南(4)
Migrating Away from Threads从现有的线程代码迁移到Grand Central Dispatch和Operation对象有许多方法,尽管可能不是所有线程代码都能够执行迁移,但是迁移可能提升性能,并简化你的代码。使用dispatch queue和Operaiton queue相比线程拥有许多优点:应用不再需要存储线程栈到内存空间消除了创建和配置
2012-03-30 11:25:17 1788
转载 iOS并发编程指南(3)
Dispatch Sources现代系统通常提供异步接口,允许应用向系统提交请求,然后在系统处理请求时应用可以继续处理自己的事情。Grand Central Dispatch正是基于这个基本行为而设计,允许你提交请求,并通过block和dispatch queue报告结果。dispatch source是基础数据类型,协调特定底层系统事件的处理。Grand Central Disp
2012-03-30 11:24:22 2110
转载 iOS并发编程指南(2)
Dispatch Queuesdispatch queues是执行任务的强大工具,允许你同步或异步地执行任意代码block。原先使用单独线程执行的所有任务都可以替换为使用dispatch queues。而dispatch queues最大的优点在于使用简单,而且更加高效。dispatch queues任务的概念就是应用需要执行的一些工作,如计算、创建或修改数据结构、处理数据等等。我
2012-03-30 11:19:09 1059
转载 iOS并发编程指南(1)
iOS Concurrency Programming GuideiOS 和 Mac OS 传统的并发编程模型是线程,不过线程模型伸缩性不强,而且编写正确的线程代码也不容易。Mac OS 和 iOS 采取 asynchronous design approach 来解决并发的问题。引入的异步技术有两个:Grand Central Dispatch:系统管理线程,你不需要编写
2012-03-30 11:16:57 1437
转载 IOS多线程开发之GCD
GCD全称为Grand Central Dispatch 在IOS4才开始,用来实现多线程。它是IOS多线程抽象层次最高的一层,下面还有更加轻量级的Cocoa operations,和Thread。 当看到GCD的使用我仿佛看到了Android中的Handler和AsynTask。[cpp] view plaincopy在主线程中任意
2012-03-28 18:32:33 2700
转载 IOS 数据存储
ios数据存储包括以下几种存储机制:属性列表对象归档SQLite3CoreDataAppSettings普通文件存储1、属性列表[cpp] view plaincopy// // Persistence1ViewController.h // Persistence1 //
2012-03-28 18:30:22 10152
转载 IOS开发UI篇之──自定义加载等待框(MBProgressHUD)
这里介绍一下网友开源的MBProgressHUD类,实现等待框,一、网上下载 MBProgessHUD 类文件,直接导入到工程即可二、示例分析在我的工程中示例如下:1)在ShowImageViewController.h头文件代码如下:#import #import "MBProgressHUD.h"@int
2012-03-23 15:28:14 3308 1
转载 IOS开发缓存机制之—本地缓存机制
前面一篇文章介绍了iOS设备的内存缓存,这篇文章将设计一个本地缓存的机制。功能需求这个缓存机制满足下面这些功能。1、可以将数据缓存到本地磁盘。2、可以判断一个资源是否已经被缓存。如果已经被缓存,在请求相同的资源,先到本地磁盘搜索。3、可以判断文件缓存什么时候过期。这里为了简单起见这里,我们在请求url资源的时候,给每次请求的文件设定一个过期的时间。4
2012-03-23 15:25:43 680
转载 IOS开发UI篇之──键盘添加工具条
IOS开发中,iphone/ipad/itouch采用的触摸设计,本身没有硬件键盘,一般都是点击输入框之后,弹出一个虚拟键盘出来,因此开发中,经常在完成编辑输入之后,要写程序代码来关闭软键盘的输出,非常繁琐,当然关闭软键盘的方式有很多。本文要分享的是一个键盘顶部工具条的类,通过这个工具条,可以很方便的关闭键盘,而且有上一项,下一项的输入框切换,非常方便,效果如下图所示:
2012-03-23 15:23:10 588
转载 iPhone 在ios4.0及以前键盘上添加自定义键盘
在 iPhone 上面開發應用程式時, 在使用輸入鍵盤時, 或多或少都會遇到客制化鍵盤的問題, 這邊筆者以簡單的數字鍵盤來示範客制化的動作. 這部份我想網路上已經有不少 sample code , 但大部份基本上都是以 SDK 3.x 的版本去實作, 以"特定寫法"來實作客制化在 iOS4 會有問題, 這部份稍候會提到兩版本的差異.上述看到的例子是 UIKeyboard
2012-03-23 13:58:36 1153
转载 使用EMOJI表情
由于IOS系统支持日文中的字块编码,所以在UILable,UITextField,UIAlertView等控件中使用emoji表情编码(emoji就是表情符号;词义来自日语(えもじ,e-moji,moji在日语中的含义是字符)),例如:[plain] view plaincopyNSString *s = [NSString stri
2012-03-23 10:24:03 3742
转载 UITextField编辑后关闭虚拟键盘方法笔记
UITextField编辑框经常会遇到关闭虚拟键盘的情况。总结一下,一下的方法。方法一:通过触摸背景关闭虚拟键盘在RootViewController.h中,如下:@interface RootViewController : UIViewController { UITextField *nameTextField; UITextFie
2012-03-22 10:37:37 767
转载 textField被虚拟键盘挡住解决方法
经常会遇到以下情况,textField被虚拟键盘挡住的情况,解决。RootViewController.h 中:#import @interface RootViewController : UIViewController { UITextField *textField1; UITextField *textField2; }@property (nonatom
2012-03-22 10:36:07 767
转载 由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系说起
init方法在init方法中实例化必要的对象(遵从LazyLoad思想)init方法中初始化ViewController本身 loadView方法当view需要被展示而它却是nil时,viewController会调用该方法。不要直接调用该方法。如果手工维护views,必须重载重写该方法如果使用IB维护views,必须不能重载重写该方法
2012-03-21 10:37:59 355
转载 UITableView 详细讲解
-、建立 UITableView DataTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)]; [DataTable setDelegate:self]; [DataTable setDataSource:self]; [self.view addSubview:DataTable]; [
2012-03-21 10:36:27 449
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人