`
文章列表
http://blog.csdn.net/absurd/article/details/612612 http://blog.chinaunix.net/uid-20622481-id-90491.html
2.3内存/句柄泄漏类问题 (1)要快速定位内存和句柄泄漏,并迅速找到泄漏堆栈和代码行,请首先熟悉工具DebugDiag的使用. (2)通过debugDiag监控出现性能问题的进程. (3)当产生内存和句柄泄漏的时候,通过debugDiag抓去此时的进程的coredump文件, (4)配置代码的pdb访问路径,启用DebugDiag的分析功能开始分析,通过windows分析报告的堆栈提示    找到泄漏代码行,问题解决.DebugDiag的使用方法,请参照文档:   性能类问题定位工具DebugDiag使用说明 2.4CPU占用内存高问题 (1)进程的CPU占用高,最好在CPU占用高时,抓去 ...
2、调试思路 2.1指针访问违例等异常类问题 (1)要处理此类问题,请首先熟悉windbg调试器的的用法. (2)要分析异常问题,找到异常代码,首先要有异常情况下的core dump文件,操作系统处理过程中,有硬件中断,到操作系统的SHE处理,最终到分发给调试器,分析core dump,找到异常线程栈,找到线程栈后,开始从windows的SHE相关接口往上看,找到出错的自己模块和代码. 相关可以分享的调试命令: ~*kn 100   //切换到指点线程. !analyze –v/ -hang/-crash //调试器直接进行异常分析,找出线程,并展示异常码和异常堆栈 .frame x    / ...
1、调试工具 (1)Windbg , vc6,vc8, Ntsd, cdb 分析挂死,死锁,CPU占用,异常的最佳工具,提供dump文件生成,源代码查看,线程栈打印,资源调用跟踪等功能,是定位问题的神兵利器 (2)DebugDiag 分析多种类型内存泄漏,异常,监控进程的执行状态的好工具,特点是泄漏代码调用栈清晰,给出的修改建议可操作性强,同时较其他的分析工具线程栈更加全面. 更强大的功能是能够选择异常类型自动生成dump文件,解决随机问题很有效 (3)Application verifier 辅助工具,通过设置开关,能够跟踪多种资源的使用,并给出最近的调用栈.是分析泄漏,死锁的好工具. (4) ...
《软件调试》及补编 张银奎 (比较系统全面) 《软件调试实战》 (德)格勒特克,赵俐译 (介绍了几款性能测试的工具,包括quantity) 《Windows用户态程序高效排错》熊力 (由几篇博客拼凑而成,并且以互联网应用为示例) 《Windows高级调试》 Mario Hewardt Daniel Pravat 著 《日臻完善:软件调试与优化典型应用》 Windbg简明教程.doc Sucsor on 2006.06.11 (介绍了windbg最常用的命令) 通往WinDbg的捷径 博客 (清晰实用的步骤)
百度云架构首席专家 林仕鼎 谈谈 Event vs Thread 4. Programming Model “Why Threads Are a Bad Idea” 单使用thread结构的server是很难真正做到高性能的,原因在于内存使用、切换开销、同步开销和保证锁正确性带来的编程复杂度等。 “SEDA: An Architecture for Well-Conditioned, Scalable Internet Services”,OSDI’01 Thread不好,但event也没法解决所有问题,于是我们寻找一个结合的方法。SEDA将应用拆分为多个stage, ...
软件设计的经典书籍,译者语言功底也是了得 1、Unix操作系统发展的历史,武侠口吻描述的颇有趣味 2、文本化的协议设计方法,应用协议的三元老,学习协议设计的好出处 3、透明性和可显性,让活代码还是活代码,让死代码还是死代码 4、管道之于Unix的意义:将大程序划分成多个行为简单的子程序,定义好接口。讨论了进程线程和IPC 5、微语言,当规格固定时,可以将程序提升成为微语言
自动测试框架和打桩库,详细使用手册见: http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html
4、整数溢出 (1)无符号数(0、+),不可能发生溢出,当它超过范围时,从0开始重新计数 有符号数(-、0、+),可能发生溢出,并且“溢出”的结果不固定 (2)当一个无符号数和有符号数相加的时候,有符号数自动转化为无符号数 (3)判断溢出 方法一:强制转换成无符号数 if( (unsigned) a + (unsigned) b > INT_MAX ) fun(); 方法二:利用(2)判断溢出 if( a > INT_MAX -b ) fun(); (5)常用误区 方法一:无符号数运算结果为无符号数,无符号数始终大于等于0 if( i - j > ...
1、封号 (1)多一个封号,则不会执行循环体 for(...); {...} (2)少一个封号,改变main函数返回值类型为struct A struct A { } main() { } 2、悬挂else引发的问题,else与最近的if(y == 0) error();匹配 if (x == 0) if(y == 0) error(); else{ z = x + y; f(&z); } 3、奇怪的无限死循环 int i,a[10]; for(i=1; i<=10; i++) a[i] = 0; 实际上并不存在的a[10] 实际上 ...
3、关于chmod命令,如何给文件ext1增加所有用户的执行权限和同组用户的写权限 答案:chmod a+x g+w ext1 分析:chmod (u/g/o/a) (+/-/=) (r/w/x) (u/g/o/a):该文件的用户、该用户所属组的其他成员、其他组、所有的用户 (+/-/=) :增加、减少、等于 (r/w/x) :读、写、执行(421) 4、linux内核包括哪几个子系统 答案:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信 分析:不包括硬件管理系统 5、那个查看文件内容的命令可以移动光标 答案:less 分析:more 显示百分比,cat一次性输出 ...
1、vi编辑器中执行存盘退出的命令是:() 答案:ZZ或者:wq 分析:两个大写的Z,或者:wq 2、通过文件名存取文件时,文件系统内部的操作过程是通过: 答案:文件名在目录中查找对应的I节点,通过I节点存取文件数据 分析: (1)UNIX文件系统包括引导块、超级块、i节点区、文件存储区、进程对换区等几部分。 (2)引导块占用第0号物理块,不属于文件系统管辖,如果系统中有多个文件系统,只有根文件系统才有引导程序放在引导块中,其余文件系统都不使用引导块; 超级块占用第1号物理块,是文件系统的控制块,超级块包括:文件系统的大小、空闲块数目、空闲块索引表、空闲i节点数目、空闲i节点索引 ...
source insight有用的快捷键 1、shift+F8 高亮当前单词 3、F7 浏览项目符号 4、F8 浏览本文件符号 5、Ctrl+L Click(select) 跳转到原型 6、Ctrl+R Click(select):语法信息(弹出该语法的信息) 7、CTRL+TAB切换不同的窗口 8、CRTL+/Refference 11、F5跳转到特定行 12、ALT+<跳转到上一个修改处 13、ALT+>跳转到下一个修改处 14、ctrl+o鼠标定位到项目窗口 15、alt+q关闭或打开项目窗口 16、alt+l鼠标定位到符号窗口 17、alt+s关闭 ...
(6)LinuxThreads存在不足,不完全兼容POSIX 进程ID问题,这是最关键的不足,Linux内核并不支持真正意义上的线程,这些轻量级进程拥有独立的进程id,而按照POSIX定义,同一 进程的所有线程应该共享一个进程id和父进程id,这在目前的“一对一”模型下是无法实现的; 信号处理问题,某些信号的缺省动作难以在现行体系上实现,比如SIGSTOP和SIGCONT,linuxThreads只能将一个线程挂起,而无法挂起整个进程。 线程总数问题,LinuxThreads将每个进程的线程最大数目定义为1024,但实际上这个数值还受到整个系统的总进程数限制,这是由于线程其实是核心进程。 ...
(1)《用TCP/IP进行网际互连》Douglus.E.Comer (2)《操作系统设计与实现》 AndrewSTanenbaum (3)《大话无线通信》丁奇 (4)《大话通信》杨波 (5)《Unix/Linux编程实践教程》Bruce Molay (6)《UNIX编程艺术》 Eric S. Raymond (7)C经典书籍 《C和指针》《 C专家编程》《 C缺陷和陷阱》 《C语言深度剖析》 (8)C++经典书籍 《c++ 编程思想》《c++沉思录》《effective c++》《more effective c++》《高质量c/c++编程指南》 (9)《计算机程序设计艺术 ...
Global site tag (gtag.js) - Google Analytics