﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-JUST DO IT ~-随笔分类-C</title><link>http://www.blogjava.net/gddg/category/53462.html</link><description>我只想当个程序员</description><language>zh-cn</language><lastBuildDate>Wed, 16 Aug 2017 17:42:05 GMT</lastBuildDate><pubDate>Wed, 16 Aug 2017 17:42:05 GMT</pubDate><ttl>60</ttl><item><title>vc window项目转DLL 不生成lib问题。 </title><link>http://www.blogjava.net/gddg/archive/2017/08/16/432749.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Wed, 16 Aug 2017 02:43:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2017/08/16/432749.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/432749.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2017/08/16/432749.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/432749.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/432749.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 检查宏定义<br>WIN32<br>_DEBUG<br>_WINDOWS<br>_USRDLL&nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2017/08/16/432749.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/432749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2017-08-16 10:43 <a href="http://www.blogjava.net/gddg/archive/2017/08/16/432749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GDB实践2</title><link>http://www.blogjava.net/gddg/archive/2017/05/24/432546.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Wed, 24 May 2017 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2017/05/24/432546.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/432546.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2017/05/24/432546.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/432546.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/432546.html</trackback:ping><description><![CDATA[<h1 id="toc_0">GDB笔记</h1>

<h2 id="toc_1">概览</h2>

<h2 id="toc_2">基础</h2>

<h2 id="toc_3">用户态会话</h2>

<p>调试模式 </p>

<ul>
<li><p>转储文件调试<br/><br/>
瞬间静态分析，进程死状态。<br/>
gdb &ndash;core=file </p></li>
<li><p>交互调试</p>

<ol>
<li><p>调试新进程<br/>
        gdb exe<br/>
        gdb &ndash;args exe [args]</p></li>
<li><p>调试已经运行的进程<br/>
        gdb &ndash;pid= 进程号</p></li>
<li><p>内核调试</p></li>
</ol></li>
</ul>

<h3 id="toc_4">3种调试已有进程</h3>

<blockquote>
<p>gdb exe </p>
</blockquote>

<p>.</p>

<blockquote>
<p>gdb &ndash;args exe [args]</p>
</blockquote>

<p>.</p>

<blockquote>
<p>gdb <br/>
file exe <br/>
run [args]</p>
</blockquote>

<p>.</p>

<blockquote>
<p>gdb &ndash;args gcc a.c -o a </p>
</blockquote>

<h4 id="toc_5">命令行参数</h4>

<blockquote>
<p>show args </p>

<p>set args  多次运行设置命令行参数</p>
</blockquote>

<h2 id="toc_6">环境变量和执行路径</h2>

<blockquote>
<p>path directory</p>
</blockquote>

<p>.</p>

<blockquote>
<p>show paths</p>
</blockquote>

<p>.</p>

<blockquote>
<p>show environment [varname]</p>
</blockquote>

<p>.</p>

<blockquote>
<p>set  environment varname[=value]  清除或者设置环境变量</p>
</blockquote>

<h2 id="toc_7">工作目录</h2>

<p>继承进入gdb工作目录</p>

<p>改变工作目录</p>

<blockquote>
<p>cd dirctory  </p>
</blockquote>

<p>显示路径</p>

<blockquote>
<p>pwd</p>
</blockquote>

<h2 id="toc_8">输入输出</h2>

<blockquote>
<p>info terminal <br/>
run &gt; a.txt <br/>
tty /dev/ttyb </p>
</blockquote>

<p>远程调试可用这些辅助。</p>

<h2 id="toc_9">inferior 下层 多个进程调试</h2>

<p>inferior gdb维护的一系列对象，每个inf对应一个调试目标进程。</p>

<p>info inferior  显示下层信息 <br/>
                NULL 程序没有跑或者已经终止<br/>
clone-inferior -copies 2  复制当前下层2份 </p>

<blockquote>
<p>(gdb) info inferiors<br/>
  Num  Description       Executable<br/>
* 1    process 10087     /home/gao/code/a<br/>
(gdb) clone-inferior -copies 2<br/>
Added inferior 2.<br/>
Added inferior 3.<br/>
(gdb) info inferiors<br/>
  Num  Description       Executable<br/>
  3    <null>  程序没有跑或者已经终止          /home/gao/code/a<br/>
  2    <null>            /home/gao/code/a<br/>
* 1    process 10087     /home/gao/code/a<br/>
(gdb)</p>
</blockquote>

<p>切换下程</p>

<blockquote>
<p>inferior 2        切换2这个下程。<br/>
进程号是0，没开始运行。<br/>
run 运行起来。</p>
</blockquote>

<p>.</p>

<p>增加一个运行下层</p>

<blockquote>
<p>add-inferior  -exec executeable  增加一个运行下层<br/>
比如说调试一个服务端程序，一个客户端程序。</p>
</blockquote>

<p>remove-inferior n   删掉一个下层<br/>
detach inferior     继续运行  quit <br/>
kill  inferior      调试进程退了，但是inferior纪录还在。</p>

<h3 id="toc_10">Tab 帮助</h3>

<p>(gdb) remove-<br/>
remove-inferiors    remove-symbol-file<br/>
(gdb) remove-<br/>
remove-inferiors    remove-symbol-file<br/>
(gdb) remove-</p>

<h4 id="toc_11">file 命令</h4>

<blockquote>
<p>file a.exe      可自行文件和符号文件是一个文件</p>
</blockquote>

<p>可自行文件和符号文件分开 </p>

<blockquote>
<p>exec-file     指定目标文件</p>
</blockquote>

<p>.</p>

<blockquote>
<p>symbol-file   指定符号文件</p>
</blockquote>

<p>run 开始运行 <br/>
可以支持 run  &gt; &gt;&gt; &lt; 重定向 </p>

<p>set args 清理命令行参数</p>

<h2 id="toc_12">附加到进程</h2>

<p>gdb &ndash;pid= pid</p>

<p>attach pid </p>

<h2 id="toc_13">终止调试进程</h2>

<blockquote>
<p>detach pid   分离进程继续运行</p>
</blockquote>

<p>.</p>

<blockquote>
<p>quit         进程退出</p>
</blockquote>

<p>.</p>

<blockquote>
<p>q <br/>
<code>ctrl</code> + <code>D</code></p>
</blockquote>

<h1 id="toc_14">执行控制</h1>

<p>断点</p>

<h2 id="toc_15">软件断点</h2>

<p>break 普通 <br/>
  tbreak 一次性 <br/>
  rbreak 正则表达式一批断点 </p>

<ul>
<li>     基于cpu断点指令，x86 int3机器码0xcc。</li>
<li>     替换断点位置的指令</li>
<li>     CPU自执行这里触发断点异常。</li>
<li>     没有断点数量限制。</li>
</ul>

<h4 id="toc_16">硬件断点</h4>

<ul>
<li>  基于cpu调试寄存器，dr0～dr7，数量限制。x86可以设定4个断点。数量限制。</li>
<li>  不修改代码，在只读内存上设置断点。EEPROM上的代码设置。</li>
<li>有数量限制。</li>
</ul>

<h4 id="toc_17">location</h4>

<ul>
<li><p>linespec </p></li>
</ul>

<ol>
<li>行号</li>
<li>－／＋ 偏移</li>
<li>文件名 ：行号</li>
<li>函数名</li>
<li>函数:标号</li>
<li>文件名：函数</li>
<li><p>标号</p></li>
</ol>

<ul>
<li><p>explicit </p></li>
</ul>

<ol>
<li>-source linename </li>
<li>-function function</li>
<li>-label label </li>
<li><p>-line number</p></li>
</ol>

<ul>
<li>address location
break * address</li>
</ul>

<p>实践</p>

<p>file banner <br/>
b main                 中断在main函数<br/>
info funciton useage   显示useage函数地址<br/>
info  *0x88888e4       直接写地址设定断点<br/>
info b                 显示所有断点 <br/>
list usage            显示useage函数<br/>
b  line.c:11 <br/>
b +2                  当前显示到14行＋2行所以设定在17行</p>

<p>虚拟机设定硬件断点会失败.<br/>
(gdb)hbreak hd_ioctl<br/>
(gdb) info b<br/>
物理机可以设定.</p>

<blockquote>
<p>(gdb) hbreak v<br/>
Hardware assisted breakpoint 2 at 0x40053a: v. (2 locations)<br/>
(gdb) info b<br/>
Num     Type           Disp Enb Address            What<br/>
1       breakpoint     keep y   <MULTIPLE><br/>
        breakpoint already hit 1 time<br/>
1.1                         y     0x000000000040054f in main at a.c:10 inf 1<br/>
1.2                         y     0x000000000040054f in main at a.c:10 inf 2<br/>
2       hw breakpoint  keep y   <MULTIPLE><br/>
2.1                         y     0x000000000040053a in v at a.c:4 inf 1<br/>
2.2                         y     0x000000000040053a in v at a.c:4 inf 2<br/>
(gdb)</p>
</blockquote>

<h4 id="toc_18">管理断点</h4>

<p>info b  显示断点<br/>
delete 1  删除<br/>
disable 1<br/>
enable  1<br/>
delete    删除所有的断点<br/>
clear  sum 删除sum函数入口的所有断点</p>

<h4 id="toc_19">扩展断点</h4>

<p>watchpoint  监视一个表达式，值变化中断。</p>

<blockquote>
<p>watch a＊b＋c／d <br/>
watch *( int * ) </p>
</blockquote>

<p>watch fd 监控局部变量fd <br/>
c     继续运行<br/>
info b      //<br/>
注意，x86硬件调试，写操作，执行过这一行，gdb显示下一行，要看上一行。hw watchpoint，在x86平台wachtpoint基于硬件实现，其他平台可能是基于软件实现。 vc6纯软件执行，执行目标速度低。<br/>
执行位置超过当前区域，无效监视点会被删除。</p>

<p>访问监视点<br/>
rwatch  读停下来。 <br/>
awatch  读或写停下来。 awatch fd <br/>
watch -l</p>

<p>b hd_ioctl thread  1<br/><br/>
info threads 带＊ 当前线程</p>

<p>繁忙函数解决方案</p>

<blockquote>
<p>b hd_ioctl thread 1 if fd &gt; 0</p>
</blockquote>

<p>当断点，断了后执行命令<br/>
()command 12 <br/>
()silent<br/>
()print &ldquo;fd is %d\n&rdquo;,fd <br/>
()continue<br/>
()end</p>

<p>动态ping不修改代码。</p>

<p>tracepoint 远程主机通讯调试，前端stub立刻恢复执行，但会记录下来。</p>

<p>catchpoint  </p>

<h2 id="toc_20">执行控制</h2>

<p>进入子函数内部。单步 step</p>

<p>汇编 stepi  </p>

<blockquote>
<p>stepi 4 <br/>
类似nexti</p>
</blockquote>

<p>不要进入子函数 </p>

<blockquote>
<p>next</p>
</blockquote>

<p>继续执行</p>

<blockquote>
<p>continue </p>
</blockquote>

<p>跑起来直到3号断点命中</p>

<blockquote>
<p>until 3 <br/>
跑起来直到3号断点命中，快捷禁止其他断点。</p>
</blockquote>

<p>恢复执行直到函数返回。</p>

<blockquote>
<p>finish </p>
</blockquote>

<h3 id="toc_21">调用函数！</h3>

<p>gdb 杜撰代码调用函数。<br/>
call sum（1，2） &hellip; </p>

<h3 id="toc_22">强制返回</h3>

<p>强制main函数 return。<br/>
return 1 </p>

<h3 id="toc_23">触发中断</h3>

<p>异常或断点进入调试器。<br/>
调试器发起中断，让程序中断下来。ctrl＋C，app收到中断信号，进入调试器。</p>

<h2 id="toc_24">符号</h2>

<p>调试器读区 调试符号。</p>

<p>二进制－调试符号－源码</p>

<p>linux dwarf 存储调试符号信息。gcc <br/>
<dwarfstd.org></p>

<blockquote>
<p>readelf -h filename <br/>
里面如果有line location debug标示 </p>

<p>readelf -w 导出调试文件 </p>

<p>gcc -g 才能输出符号 </p>
</blockquote>

<p>ubuntu 符号服务器 <br/>
&lt; ddebs.ubuntu.com/pool/main/&gt;<br/>
分离操作<br/>
strip </p>

<p>安装ubunte的linux 内核符号<br/>
<a href="https://askubuntu.com/questions/197016/how-to-install-a-package-that-contains-ubuntu-kernel-debug-symbols">https://askubuntu.com/questions/197016/how-to-install-a-package-that-contains-ubuntu-kernel-debug-symbols</a></p>

<p>安装libc符号</p>

<blockquote>
<p>dpkg -s /lib/x86_64-linux-gun/libc-2.15.so<br/>
dpkg -s libc.so.6 <br/>
sudo apt-get -c aptproxy.conf install libc6-dbg </p>
</blockquote>

<p>libc 调试符号</p>

<blockquote>
<p>sudo apt-get install libc6-dbg</p>
</blockquote>

<p>符号路径</p>

<blockquote>
<p>gdb 使用file 或 symbol－file 加载符号文件 <br/>
自动搜索 path 路径 </p>
</blockquote>

<p>（gdb）i share <br/>
* 共享库没调试信息</p>

<p>搜索符号<br/>
info vaiables regex 类名／函数名／变量名</p>

<h3 id="toc_25">内存地址与符号互换</h3>

<p>info addriess 函数名</p>

<p>info symbol  地址 </p>

<blockquote>
<p>(gdb) info address main<br/>
Symbol &ldquo;main&rdquo; is a function at address 0x400547.<br/>
(gdb) info symbol 0x400547<br/>
main in section .text of /home/gao/code/a</p>
</blockquote>

<p>.</p>

<blockquote>
<p>info os </p>
</blockquote>

<p>查看加载的文件内存位置</p>

<blockquote>
<p>info files </p>
</blockquote>

<p>列出全局变量</p>

<blockquote>
<p>info variable <br/>
info va</p>
</blockquote>

<h3 id="toc_26">显示源码</h3>

<p>list<br/>
list - <br/>
dir 源码路径<br/>
show dir </p>

<p>常用命令源码 </p>

<p>安装系统工具源码和调试</p>

<blockquote>
<p>apt-get source coreutils<br/>
sudo apt-get install coreutils-dbgsym <br/>
gdb /bin/ls <br/>
list main <br/>
dir ~/src/coreutils-7.4/src <br/>
list main </p>
</blockquote>

<p>libc </p>

<blockquote>
<p>sudo apt-get source libc6-dev<br/>
/home/ge/eglibc-2.15 </p>
</blockquote>

<p>dir 搜索路径   ：分割<br/>
$cdir 编译路径<br/>
cwd  当前工作路径</p>

<h2 id="toc_27">查看调试目标</h2>

<blockquote>
<p>观察寄存器<br/>
info reg</p>
</blockquote>

<p>栈<br/>
子函数返回地址<br/>
函数参数<br/>
局部变量</p>

<blockquote>
<p>bt  n     观察函数返回地址 <br/>
frame n   切换栈帧<br/>
up n<br/>
down n <br/>
info frame ［address］<br/>
info args <br/>
info locals</p>
</blockquote>

<p>注意，切换栈帧之后可能会发生，本地变量值不准确，因为值存在寄存器中需要小心。</p>

<p>观察内存<br/>
print  </p>

<blockquote>
<p>p /f 表达式      表达式要打印位置<br/>
xduotcf</p>
</blockquote>

<p>x</p>

<blockquote>
<p>x /Nuf<br/>
N 打印几个单元<br/>
u 每个单元大小 b-1byte w-2byte h-4byte  g-8byte<br/><br/>
f s字符串i指令格式</p>
</blockquote>

<p>x/s 0xfffff81946000  打印字符串</p>

<p>x   /32bx  arg     bit 16禁制   </p>

<blockquote>
<p>(gdb) x  /32bx &amp;i<br/>
0x7fffffffc76c: 0x01    0x00    0x00    0x00    0x70    0x05    0x40    0x00<br/>
0x7fffffffc774: 0x00    0x00    0x00    0x00    0x40    0xfa    0xa2    0xf7<br/>
0x7fffffffc77c: 0xff    0x7f    0x00    0x00    0x58    0xc8    0xff    0xff<br/>
0x7fffffffc784: 0xff    0x7f    0x00    0x00    0x58    0xc8    0xff    0xff<br/>
(gdb)</p>

<p>p arg[0]<br/>
p arg[i]</p>
</blockquote>

<p>p *&amp;a[0]@10   a0数组开始的10个元素</p>

<p>反汇编</p>

<blockquote>
<p>disas main     main反汇编代码<br/>
x/5i     schedule   这个地址开始的5条汇编指令。</p>
</blockquote>

<p>gdb mov 从左往右赋值at&amp;t汇编。</p>

<h2 id="toc_28">高级技巧</h2>

<h3 id="toc_29">信号</h3>

<ul>
<li>info signals   异常／同步／中断</li>
</ul>

<p>stop 要不要中断下来看<br/>
printf 打印信息<br/>
pass  要不要传递给应用程序。</p>

<ul>
<li>handle 修改规则
handle signal act 
print
noprint
stop
nostop
pass
nopass </li>
</ul>

<p>handle SIGPIPE  不要中断下来，打印一个信息，网络程序常用</p>

<blockquote>
<p>(gdb) handle SIGPIPE nostop<br/>
Signal        Stop      Print   Pass to program Description<br/>
SIGPIPE       No        Yes     Yes             Broken pipe</p>
</blockquote>

<h3 id="toc_30">Thread</h3>

<p>info threads</p>

<blockquote>
<p>LWP－light weight process 线程编号。<br/>
* gdb当前线程</p>
</blockquote>

<p>切换当前线程  </p>

<blockquote>
<p>thread 2 </p>
</blockquote>

<p>打印所有线程</p>

<blockquote>
<p>thread apply all bt 针对一群线程的命令避免切换来看。</p>
</blockquote>

<p>线程改名字</p>

<blockquote>
<p>thread name ［name］</p>
</blockquote>

<p>我自己经验 LWP 可以很好的观察线程负载情况。</p>
<img src ="http://www.blogjava.net/gddg/aggbug/432546.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2017-05-24 14:18 <a href="http://www.blogjava.net/gddg/archive/2017/05/24/432546.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c++ dll 接口需要加声明 </title><link>http://www.blogjava.net/gddg/archive/2016/12/15/432112.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Thu, 15 Dec 2016 01:34:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2016/12/15/432112.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/432112.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2016/12/15/432112.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/432112.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/432112.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2016/12/15/432112.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/432112.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2016-12-15 09:34 <a href="http://www.blogjava.net/gddg/archive/2016/12/15/432112.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>qt 5.7 ubuntu 16.4  中文输入</title><link>http://www.blogjava.net/gddg/archive/2016/12/01/432036.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Thu, 01 Dec 2016 08:30:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2016/12/01/432036.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/432036.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2016/12/01/432036.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/432036.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/432036.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: qt ubuntu 安装和中文&nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2016/12/01/432036.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/432036.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2016-12-01 16:30 <a href="http://www.blogjava.net/gddg/archive/2016/12/01/432036.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C 面向对象编程汇集</title><link>http://www.blogjava.net/gddg/archive/2015/11/24/428355.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Tue, 24 Nov 2015 15:32:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/11/24/428355.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/428355.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/11/24/428355.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/428355.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/428355.html</trackback:ping><description><![CDATA[<h1 id="toc_0">C面向对象编程汇集</h1>

<p>参考资料：<br/>
Object-oriented Programming with ANSI-C<br/>
1993年，第一份c如何编写OO的资料,free.<br/>
OOC.PDF<br/>
<a href="https://www.cs.rit.edu/%7Eats/books/ooc.pdf">https://www.cs.rit.edu/~ats/books/ooc.pdf</a></p>

<p>中文翻译：<br/>
<a href="https://code.google.com/p/ooc/downloads/detail?name=ooc-translate-preview-r26.pdf&amp;can=2&amp;q=">https://code.google.com/p/ooc/downloads/detail?name=ooc-translate-preview-r26.pdf&amp;can=2&amp;q=</a></p>

<p>轻量级的C语言面向对象编程框架<br/>
<a href="http://sinojelly.blog.51cto.com/479153/281184">http://sinojelly.blog.51cto.com/479153/281184</a></p>

<p>UML—OOPC嵌入式C语言开发精讲<br/>
里面有一套框架可以 c写OO. <br/>
<a href="http://pan.baidu.com/share/link?shareid=3402978666&amp;uk=3188261067&amp;adapt=pc&amp;fr=ftw#path=%252FC%25E8%25AF%25AD%25E8%25A8%2580">http://pan.baidu.com/share/link?shareid=3402978666&amp;uk=3188261067&amp;adapt=pc&amp;fr=ftw#path=%252FC%25E8%25AF%25AD%25E8%25A8%2580</a></p>

<p>你试过这样写C程序吗 －－函数式编程<br/>
&lt; &gt;</p>

<p>我所偏爱的 C 语言面向对象编程范式－－云风<br/>
<a href="http://blog.codingnow.com/2010/03/object_oriented_programming_in_c.html">http://blog.codingnow.com/2010/03/object_oriented_programming_in_c.html</a></p>

<p>C语言面向对象编程 -- 6篇专栏<br/>
<a href="http://blog.csdn.net/column/details/object-orient-c.html">http://blog.csdn.net/column/details/object-orient-c.html</a></p>
<img src ="http://www.blogjava.net/gddg/aggbug/428355.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-11-24 23:32 <a href="http://www.blogjava.net/gddg/archive/2015/11/24/428355.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cache 实验1</title><link>http://www.blogjava.net/gddg/archive/2015/11/15/428203.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Sun, 15 Nov 2015 14:20:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/11/15/428203.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/428203.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/11/15/428203.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/428203.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/428203.html</trackback:ping><description><![CDATA[<p>测试代码的locality。<br />
数组的读区方式不同，按照行读，被<strong>cache</strong>也是按行连续加载的。<br />
如果按照列读区，那么效率很低，除非cache足够大，而且也要遍历所有的数据，并且cache hash算法也好，实现的硬件还是多路组相联的cache硬件实现。</p>

<p>** valgrind --tool=cachegrind ./test2**</p>

<h2 id="toc_0">code1:</h2>

<pre><code class="language-c">#include &lt;stdio.h&gt;
#define MAXROW 8000
#define MAXCOL 8000
int main () {
int i,j;
 static int x[MAXROW][MAXCOL];
 printf ("Starting!\n");
       for (i=0;i&lt;MAXROW;i++)
       for (j=0;j&lt;MAXCOL;j++)
              x[i][j] = i*j;
             printf("Completed!\n");
return 0;                                                    
 }
</code></pre>

<h2 id="toc_1">code2:</h2>

<pre><code class="language-c">#include &lt;stdio.h&gt;                                                         
 #define MAXROW 8000
 #define MAXCOL 8000
 int main () {
 int i,j;
 static int x[MAXROW][MAXCOL];
 printf ("Starting!\n");
          for (j=0;j&lt;MAXCOL;j++)
                         for (i=0;i&lt;MAXROW;i++)
                 x[i][j] = i*j;
 printf("Completed!\n");
 return 0;
 }
 ```

##结果

</code></pre>

<p>Command: ./test1<br />
Starting!<br />
Completed!</p>

<p>I   refs:      905,721,688<br />
 I1  misses:          4,177<br />
 LLi misses:          2,808<br />
 I1  miss rate:        0.00%<br />
 LLi miss rate:        0.00%</p>

<p>D   refs:      514,830,867  (386,118,735 rd   + 128,712,132 wr)<br />
 D1  misses:      4,025,828  (     23,565 rd   +   4,002,263 wr)<br />
 LLd misses:      4,008,456  (      6,997 rd   +   4,001,459 wr)</p>

<p>D1  miss rate:         0.8% (        0.0%     +         3.1%  ) <br />
LLd miss rate:         0.8% (        0.0%     +         3.1%  ) </p>

<p>LL refs:         4,030,005  (     27,742 rd   +   4,002,263 wr)<br />
 LL misses:       4,011,264  (      9,805 rd   +   4,001,459 wr)<br />
 LL miss rate:          0.3% (        0.0%     +         3.1%  )</p>

<p>gcc -o test2  test2.c<br />
** valgrind --tool=cachegrind ./test2**</p>

<p>I   refs:      905,720,801<br />
I1  misses:          4,113<br />
LLi misses:          2,811<br />
I1  miss rate:        0.00%<br />
LLi miss rate:        0.00%</p>

<p>D   refs:      514,830,348  (386,118,427 rd   + 128,711,921 wr)<br />
D1  misses:     64,025,705  (     23,462 rd   +  64,002,243 wr)<br />
LLd misses:      4,016,427  (      6,977 rd   +   4,009,450 wr)<br />
<strong>D1  miss rate:        12.4% (        0.0%     +        49.7%  )<br />
LLd miss rate:         0.8% (        0.0%     +         3.1%  )</strong></p>

<p>LL refs:        64,029,818  (     27,575 rd   +  64,002,243 wr)<br />
LL misses:       4,019,238  (      9,788 rd   +   4,009,450 wr)<br />
LL miss rate:          0.3% (        0.0%     +         3.1%  )</p>

<p>Starting!<br />
Completed!<br />
```</p>

<h2 id="toc_2">参考：</h2>

<p>valgrind调试CPU缓存命中率和内存泄漏<br />
<a href="http://laoxu.blog.51cto.com/4120547/1395236">http://laoxu.blog.51cto.com/4120547/1395236</a></p><img src ="http://www.blogjava.net/gddg/aggbug/428203.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-11-15 22:20 <a href="http://www.blogjava.net/gddg/archive/2015/11/15/428203.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>malloc free 内部 </title><link>http://www.blogjava.net/gddg/archive/2015/08/26/426996.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Wed, 26 Aug 2015 06:49:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/08/26/426996.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/426996.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/08/26/426996.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/426996.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/426996.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 未完成.&nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/08/26/426996.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/426996.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-08-26 14:49 <a href="http://www.blogjava.net/gddg/archive/2015/08/26/426996.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C标准相关</title><link>http://www.blogjava.net/gddg/archive/2015/08/26/426995.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Wed, 26 Aug 2015 06:41:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/08/26/426995.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/426995.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/08/26/426995.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/426995.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/426995.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/08/26/426995.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/426995.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-08-26 14:41 <a href="http://www.blogjava.net/gddg/archive/2015/08/26/426995.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>汇编调试 IDA </title><link>http://www.blogjava.net/gddg/archive/2015/08/26/426993.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Wed, 26 Aug 2015 05:33:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/08/26/426993.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/426993.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/08/26/426993.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/426993.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/426993.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 待学.&nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/08/26/426993.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/426993.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-08-26 13:33 <a href="http://www.blogjava.net/gddg/archive/2015/08/26/426993.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gdb 汇总 </title><link>http://www.blogjava.net/gddg/archive/2015/08/26/426987.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Wed, 26 Aug 2015 02:53:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/08/26/426987.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/426987.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/08/26/426987.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/426987.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/426987.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/08/26/426987.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/426987.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-08-26 10:53 <a href="http://www.blogjava.net/gddg/archive/2015/08/26/426987.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于数组</title><link>http://www.blogjava.net/gddg/archive/2015/08/25/426978.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Tue, 25 Aug 2015 07:38:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/08/25/426978.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/426978.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/08/25/426978.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/426978.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/426978.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 未完成.&nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/08/25/426978.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/426978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-08-25 15:38 <a href="http://www.blogjava.net/gddg/archive/2015/08/25/426978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>make 警告:检测到时钟错误。您的创建可能是不完整的”解决方法</title><link>http://www.blogjava.net/gddg/archive/2015/08/25/426972.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Tue, 25 Aug 2015 05:42:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/08/25/426972.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/426972.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/08/25/426972.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/426972.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/426972.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/08/25/426972.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/426972.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-08-25 13:42 <a href="http://www.blogjava.net/gddg/archive/2015/08/25/426972.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编译结构体问题 expected specifier-qualifier-list before XXX   gcc g++ </title><link>http://www.blogjava.net/gddg/archive/2015/08/24/426964.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Mon, 24 Aug 2015 05:57:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/08/24/426964.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/426964.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/08/24/426964.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/426964.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/426964.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: typedef struct AA  <br>{<br>AA * ptr;<br>}AA ;&nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/08/24/426964.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/426964.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-08-24 13:57 <a href="http://www.blogjava.net/gddg/archive/2015/08/24/426964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>调试GDB汇总</title><link>http://www.blogjava.net/gddg/archive/2015/08/13/426754.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Thu, 13 Aug 2015 02:10:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/08/13/426754.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/426754.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/08/13/426754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/426754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/426754.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/08/13/426754.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/426754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-08-13 10:10 <a href="http://www.blogjava.net/gddg/archive/2015/08/13/426754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c++内存分配     </title><link>http://www.blogjava.net/gddg/archive/2015/08/02/426549.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Sun, 02 Aug 2015 04:12:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/08/02/426549.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/426549.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/08/02/426549.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/426549.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/426549.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 未完成.&nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/08/02/426549.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/426549.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-08-02 12:12 <a href="http://www.blogjava.net/gddg/archive/2015/08/02/426549.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>切换gcc版本</title><link>http://www.blogjava.net/gddg/archive/2015/07/23/426400.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Thu, 23 Jul 2015 14:18:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/07/23/426400.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/426400.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/07/23/426400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/426400.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/426400.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/07/23/426400.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/426400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-07-23 22:18 <a href="http://www.blogjava.net/gddg/archive/2015/07/23/426400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编译器定义的宏.</title><link>http://www.blogjava.net/gddg/archive/2015/07/06/426061.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Mon, 06 Jul 2015 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/07/06/426061.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/426061.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/07/06/426061.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/426061.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/426061.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/07/06/426061.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/426061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-07-06 15:13 <a href="http://www.blogjava.net/gddg/archive/2015/07/06/426061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gdb使用笔记.</title><link>http://www.blogjava.net/gddg/archive/2015/07/06/426060.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Mon, 06 Jul 2015 07:08:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/07/06/426060.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/426060.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/07/06/426060.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/426060.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/426060.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/07/06/426060.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/426060.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-07-06 15:08 <a href="http://www.blogjava.net/gddg/archive/2015/07/06/426060.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>make libevent with openssl on windows</title><link>http://www.blogjava.net/gddg/archive/2015/07/01/425974.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Wed, 01 Jul 2015 02:36:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/07/01/425974.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/425974.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/07/01/425974.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/425974.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/425974.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在windows上编译openssl 和  libevent.<br>libevent-2.0.22-stable<br>openssl-1.0.2c &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/07/01/425974.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/425974.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-07-01 10:36 <a href="http://www.blogjava.net/gddg/archive/2015/07/01/425974.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>libevent windows 构建 (warning LNK4098: 默认库“LIBCMT”与其他库的使用冲突 )</title><link>http://www.blogjava.net/gddg/archive/2015/06/30/425957.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Tue, 30 Jun 2015 03:21:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/06/30/425957.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/425957.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/06/30/425957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/425957.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/425957.html</trackback:ping><description><![CDATA[<div><div><div>libevent windows构建</div>warning LNK4098: 默认库&#8220;LIBCMT&#8221;与其他库的使用冲突<br />问题原因:<br />exe 是debug版本.<br />静态库是release版本.<br /></div>编译libevent&nbsp;<br /><div>C:\dev\mylibevent\libevent-2.0.22-stable&gt;nmake /f Makefile.nmake<br /><br />原来的修改 relase 版本多线程静态库 &nbsp;CFLAGS=&nbsp; &nbsp; /MT<br /><br />编译的时候需要配置合适的线程库&nbsp;<br /><br /><div>拷贝出一个Makefile_D.nmake &nbsp;多线程debug静态库</div><div>CFLAGS= .... &nbsp; &nbsp;/MTd<br /><br />工程中链接对应的版本的lib文件.<br /><br />参考:&nbsp;<br /><br /><div>https://msdn.microsoft.com/zh-cn/library/vstudio/abx4dbyh(v=vs.110).aspx<br /><br /><div>http://www.cnblogs.com/luxiaoxun/p/3603399.html<br /></div><div>http://zyan.cc/libevent_windows/</div><br /></div></div></div></div><img src ="http://www.blogjava.net/gddg/aggbug/425957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-06-30 11:21 <a href="http://www.blogjava.net/gddg/archive/2015/06/30/425957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ BOOK 汇总</title><link>http://www.blogjava.net/gddg/archive/2015/05/08/424948.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Fri, 08 May 2015 08:34:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/05/08/424948.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/424948.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/05/08/424948.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/424948.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/424948.html</trackback:ping><description><![CDATA[<br /><div>Jumping Into C++ 完整英文版&nbsp;<br /><div>http://vdisk.weibo.com/s/lFnhClqHrmi</div></div><img src ="http://www.blogjava.net/gddg/aggbug/424948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-05-08 16:34 <a href="http://www.blogjava.net/gddg/archive/2015/05/08/424948.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c++ 实例函数处理回调函数</title><link>http://www.blogjava.net/gddg/archive/2015/05/07/424908.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Thu, 07 May 2015 02:59:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/05/07/424908.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/424908.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/05/07/424908.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/424908.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/424908.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/05/07/424908.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/424908.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-05-07 10:59 <a href="http://www.blogjava.net/gddg/archive/2015/05/07/424908.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c++ c stl boost  trim 函数</title><link>http://www.blogjava.net/gddg/archive/2015/03/20/423657.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Fri, 20 Mar 2015 01:39:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/03/20/423657.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/423657.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/03/20/423657.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/423657.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/423657.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/03/20/423657.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/423657.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-03-20 09:39 <a href="http://www.blogjava.net/gddg/archive/2015/03/20/423657.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>openmp 资料总结 gcc vc 编译配置</title><link>http://www.blogjava.net/gddg/archive/2015/03/19/423627.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Thu, 19 Mar 2015 08:31:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/03/19/423627.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/423627.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/03/19/423627.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/423627.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/423627.html</trackback:ping><description><![CDATA[<p><font size="6">1.vc&nbsp; 编译</font> </p> <p><a href="http://www.blogjava.net/images/blogjava_net/gddg/Windows-Live-Writer/openmpgccvc_FCAF/V52$HM2(%25G~9EQ7%7DNBWF%25%5B5_2.jpg"><img title="V52$HM2(%G~9EQ7}NBWF%[5" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="V52$HM2(%G~9EQ7}NBWF%[5" src="http://www.blogjava.net/images/blogjava_net/gddg/Windows-Live-Writer/openmpgccvc_FCAF/V52$HM2(%25G~9EQ7%7DNBWF%25%5B5_thumb.jpg" width="682" height="123"></a>  <p><font size="3">头文件</font>  <p><font size="3">#include &lt;omp.h</font></p> <p><font size="3">omp_set_num_threads(threadNumber);<br>#pragma omp parallel default(shared) private(i,riskId)&nbsp; <br>&nbsp;&nbsp;&nbsp; {<br>#pragma&nbsp; omp for&nbsp;&nbsp;&nbsp; </font></p> <blockquote> <p><font size="3">}</font></p></blockquote> <p><font size="3">}</font></p> <p><font size="3"></font>&nbsp; <p><font size="3">GCC配置 </font> <p><font size="3">1. 编译 </font><pre><font size="3">-fopenmp</font></pre><pre><font size="3">设定线程数量 export OMP_NUM_THREADS=6</font></pre><pre><font face="Verdana"></font>&nbsp;</pre><pre><font face="Verdana"></font>&nbsp;</pre><pre><font face="Verdana"></font>&nbsp;</pre><pre><font face="Verdana">参考</font></pre>
<h3>通过 GCC 学习 OpenMP 框架</h3><pre><a title="http://www.ibm.com/developerworks/cn/aix/library/au-aix-openmp-framework/" href="http://www.ibm.com/developerworks/cn/aix/library/au-aix-openmp-framework/">http://www.ibm.com/developerworks/cn/aix/library/au-aix-openmp-framework/</a></pre><pre><font face="Verdana"></font>&nbsp;</pre><img src ="http://www.blogjava.net/gddg/aggbug/423627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-03-19 16:31 <a href="http://www.blogjava.net/gddg/archive/2015/03/19/423627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle client  关闭异常信号 调试辅助 </title><link>http://www.blogjava.net/gddg/archive/2015/03/18/423583.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Wed, 18 Mar 2015 09:16:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/03/18/423583.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/423583.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/03/18/423583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/423583.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/423583.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: SQLnet.ora<br>DIAG_ADR_ENABLED=OFF<br>DIAG_SIGHANDLER_ENABLED=FALSE<br>DIAG_DDE_ENABLED=FALSE<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/03/18/423583.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/423583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-03-18 17:16 <a href="http://www.blogjava.net/gddg/archive/2015/03/18/423583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux 系统分析 </title><link>http://www.blogjava.net/gddg/archive/2015/03/16/423494.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Mon, 16 Mar 2015 10:37:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/03/16/423494.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/423494.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/03/16/423494.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/423494.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/423494.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/03/16/423494.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/423494.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-03-16 18:37 <a href="http://www.blogjava.net/gddg/archive/2015/03/16/423494.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>［网络异常收集贴］ c++ 怎么看c语言的异常处理 </title><link>http://www.blogjava.net/gddg/archive/2015/03/15/423467.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Sun, 15 Mar 2015 05:07:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/03/15/423467.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/423467.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/03/15/423467.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/423467.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/423467.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 总结一些看法&nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/03/15/423467.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/423467.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-03-15 13:07 <a href="http://www.blogjava.net/gddg/archive/2015/03/15/423467.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c++ connect ms sql server sqlapi++ 连接配置 解决登录失败问题.</title><link>http://www.blogjava.net/gddg/archive/2015/03/10/423350.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Tue, 10 Mar 2015 09:19:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/03/10/423350.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/423350.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/03/10/423350.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/423350.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/423350.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.ms sql 的配置<br><br>    安装了 sql- server2005 express ,安装默认会关闭网络连接的等.需要打开ip:1433端口.<br><br>    账户密码需要使用,ms sql–server 登录登录.<br><br>2.sqlapi 的使用.<br><br>正确的sqlapi ++  ms sql server 串 <br> char * dbname = "127.0.0.1\\SQL2005EXPRESS@master"; <br> &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/03/10/423350.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/423350.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-03-10 17:19 <a href="http://www.blogjava.net/gddg/archive/2015/03/10/423350.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>error C2632: “short”后面的“short”非法     宏定义</title><link>http://www.blogjava.net/gddg/archive/2015/02/26/423058.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Thu, 26 Feb 2015 10:20:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/02/26/423058.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/423058.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/02/26/423058.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/423058.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/423058.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: typedef unsigned short	WORD; <br>#define WORD unsigned short <br>冲突<br>解决办法:<br>1.因为2个头文件来自不同项目. 修改源文件彻底解决掉这个问题.<br>2.先后引用位置 .<br>3.隐藏不必要的 .h文件,只有需要cpp才添加h引用.这样防止不必要的引用.&nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/02/26/423058.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/423058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-02-26 18:20 <a href="http://www.blogjava.net/gddg/archive/2015/02/26/423058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>stackoverflow 代码分支预判断</title><link>http://www.blogjava.net/gddg/archive/2015/02/24/423017.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Tue, 24 Feb 2015 13:13:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/02/24/423017.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/423017.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/02/24/423017.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/423017.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/423017.html</trackback:ping><description><![CDATA[代码分支预判断<br />
<div><a href="http://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-an-unsorted-array">http://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-an-unsorted-array<br /></a><div></div>
给出了2段代码c和java：<br />1.随机数插入数组中。<br />2.sum统计相加 。<br /><br />c 结果不sort 需要21秒，排序后7秒。<br />java &nbsp;5秒。<br />问题在哪里？&nbsp;<br /><br /><br /><br />分支预测资料：&nbsp;<br /><br /><div><a href="http://comp.lang.cpp.moderated.narkive.com/oZn86c9y/hidden-features-and-dark-corners-of-c-stl">Hidden Features and Dark Corners of C++/STL&nbsp;</a><br /><div><br />http://comp.lang.cpp.moderated.narkive.com/oZn86c9y/hidden-features-and-dark-corners-of-c-stl</div></div><div><a href="http://en.wikipedia.org/wiki/Branch_predictor">http://en.wikipedia.org/wiki/Branch_predictor</a></div><br /><div><a href="http://zh.wikipedia.org/wiki/%E5%88%86%E6%94%AF%E9%A0%90%E6%B8%AC%E5%99%A8">http://zh.wikipedia.org/wiki/%E5%88%86%E6%94%AF%E9%A0%90%E6%B8%AC%E5%99%A8</a></div><br />&nbsp;<br /><br />
<br />
<br />
</div><img src ="http://www.blogjava.net/gddg/aggbug/423017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gddg/" target="_blank">小高</a> 2015-02-24 21:13 <a href="http://www.blogjava.net/gddg/archive/2015/02/24/423017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>