﻿<?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 ~</title><link>http://www.blogjava.net/gddg/</link><description>我只想当个程序员</description><language>zh-cn</language><lastBuildDate>Sat, 18 Apr 2026 13:58:53 GMT</lastBuildDate><pubDate>Sat, 18 Apr 2026 13:58:53 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>.net 申请内存不足 GUI 相关</title><link>http://www.blogjava.net/gddg/archive/2017/04/18/432466.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Tue, 18 Apr 2017 02:32:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2017/04/18/432466.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/432466.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2017/04/18/432466.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/432466.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/432466.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 绘图控件重绘->其他操作->绘图控件重绘<br><br>进入了这样一个死循环,函数堆栈空间分配不足够.&nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2017/04/18/432466.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/432466.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-04-18 10:32 <a href="http://www.blogjava.net/gddg/archive/2017/04/18/432466.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse tomcat 配置遇到问题</title><link>http://www.blogjava.net/gddg/archive/2017/03/09/432368.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Thu, 09 Mar 2017 02:02:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2017/03/09/432368.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/432368.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2017/03/09/432368.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/432368.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/432368.html</trackback:ping><description><![CDATA[<span style="font-family: Verdana; font-size: 10pt;">eclipse 配置遇到 object 找不到问题 ?</span><br /><a href="http://stackoverflow.com/questions/25337182/the-type-java-lang-object-cannot-be-resolved-eclipse-buildpath-not-working" style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; font-size: 24px; color: #242729; text-decoration: none; cursor: pointer; line-height: 1.35;"><span style="font-size: 10pt; font-family: Verdana;">The type java.lang.object cannot be resolved - Eclipse buildpath not working<br /><br /></span><span style="font-size: 10pt; font-family: Verdana;">因为替换了 jvm版本.<br /></span></a><div><span style="font-family: Verdana; font-size: 10pt;">解决办法:&nbsp;</span><br /><font face="Verdana"><span style="font-size: 10pt;">build-&gt;library -&gt; add library-&gt;add jre library.</span></font><br /><br /><br /><font face="Verdana"><span style="font-size: 10pt;">tomcat部署问题.?</span></font><br /><font face="Verdana"><span style="font-size: 10pt;">1.清理 部署 重启. &nbsp;</span></font><br /><font face="Verdana"><span style="font-size: 10pt;">2.先删掉部署项目,可以重新配置config.</span></font><br /><br /><font face="Verdana"><span style="font-size: 10pt;">tomcat 找不到oracle 驱动程序?</span></font><div><div>Tomcat error: java.sql.SQLException: No suitable driver found for jdbc<br /></div></div><font face="Verdana"><span style="font-size: 10pt;">catalina_home/lib 中已经放入了jar文件后还是报错.</span></font><br /><font face="Verdana"><span style="font-size: 10pt;">请在 context.xml 中配置</span></font><br /><div><span style="font-size: 13.3333px;">&nbsp;&lt;WatchedResource&gt;WEB-INF/web.xml&lt;/WatchedResource&gt;</span></div><div><span style="font-size: 13.3333px;">&nbsp;&lt;ResourceLink global="jdbc/oracle" name="jdbc/oracle" type="javax.sql.DataSource"/&gt;</span></div><div><span style="font-size: 13.3333px;">&nbsp;<br />在 server.xml</span><br /><div><span style="font-size: 13.3333px;">&nbsp; &nbsp; &nbsp; &nbsp;&lt;Resource</span></div><div><span style="font-size: 13.3333px;">&nbsp; &nbsp; &nbsp; &nbsp; name="jdbc/oracle"</span></div><div><span style="font-size: 13.3333px;">&nbsp; &nbsp; &nbsp; &nbsp; auth="Container"</span></div><div><span style="font-size: 13.3333px;">&nbsp; &nbsp; &nbsp; &nbsp; type="javax.sql.DataSource"</span></div><div><span style="font-size: 13.3333px;">&nbsp; &nbsp; &nbsp; &nbsp; maxActive="100" maxIdle="30" maxWait="10000"</span></div><div><span style="font-size: 13.3333px;">&nbsp; &nbsp; &nbsp; &nbsp; driverClassName="oracle.jdbc.OracleDriver"</span></div><div><span style="font-size: 13.3333px;">&nbsp; &nbsp; &nbsp; &nbsp; url="jdbc:oracle:thin:@10.243.140.111:1521:test"</span></div><div><span style="font-size: 13.3333px;">&nbsp; &nbsp; &nbsp; &nbsp; username="core"</span></div><div><span style="font-size: 13.3333px;">&nbsp; &nbsp; &nbsp; &nbsp; password="core"/&gt;</span></div><br />eclipse 项目属性, web deployment assembly设置 &nbsp; source: /webcontent &nbsp; deploypath: /&nbsp;<br /><br /><br /><span style="font-size: 13.3333px;">&nbsp; &nbsp;&nbsp;</span></div>tomcat 开启gzip压缩<br /><div>http://blog.csdn.net/hbcui1984/article/details/5666327</div><br /><br /><br />Setting property 'source' to 'org.eclipse.jst.jee.server 这个不是问题.<br /><br /><div>解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题.<br /><div>http://blog.csdn.net/foreversilent/article/details/11147847</div></div><span style="font-family: Verdana; font-size: 10pt;"><br /></span></div><img src ="http://www.blogjava.net/gddg/aggbug/432368.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-03-09 10:02 <a href="http://www.blogjava.net/gddg/archive/2017/03/09/432368.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>windows.h与winsock2.h的包含顺序</title><link>http://www.blogjava.net/gddg/archive/2016/05/13/430489.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Fri, 13 May 2016 07:59:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2016/05/13/430489.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/430489.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2016/05/13/430489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/430489.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/430489.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2016/05/13/430489.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/430489.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-05-13 15:59 <a href="http://www.blogjava.net/gddg/archive/2016/05/13/430489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TMUX笔记</title><link>http://www.blogjava.net/gddg/archive/2015/12/27/428836.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Sun, 27 Dec 2015 09:07:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/12/27/428836.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/428836.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/12/27/428836.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/428836.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/428836.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/12/27/428836.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/428836.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-12-27 17:07 <a href="http://www.blogjava.net/gddg/archive/2015/12/27/428836.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sudo 添加用户</title><link>http://www.blogjava.net/gddg/archive/2015/12/15/428664.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Tue, 15 Dec 2015 07:57:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/12/15/428664.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/428664.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/12/15/428664.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/428664.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/428664.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/12/15/428664.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/428664.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-12-15 15:57 <a href="http://www.blogjava.net/gddg/archive/2015/12/15/428664.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>too many open files  </title><link>http://www.blogjava.net/gddg/archive/2015/12/10/428587.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Thu, 10 Dec 2015 02:39:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/12/10/428587.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/428587.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/12/10/428587.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/428587.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/428587.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 解决socket 太多问题.&nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/12/10/428587.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/428587.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-12-10 10:39 <a href="http://www.blogjava.net/gddg/archive/2015/12/10/428587.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>ruby性能    </title><link>http://www.blogjava.net/gddg/archive/2015/09/23/427439.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Wed, 23 Sep 2015 03:26:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/09/23/427439.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/427439.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/09/23/427439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/427439.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/427439.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/09/23/427439.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/427439.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-09-23 11:26 <a href="http://www.blogjava.net/gddg/archive/2015/09/23/427439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Fault Tolerant Computer Architecture 容错</title><link>http://www.blogjava.net/gddg/archive/2015/09/16/427352.html</link><dc:creator>小高</dc:creator><author>小高</author><pubDate>Wed, 16 Sep 2015 06:05:00 GMT</pubDate><guid>http://www.blogjava.net/gddg/archive/2015/09/16/427352.html</guid><wfw:comment>http://www.blogjava.net/gddg/comments/427352.html</wfw:comment><comments>http://www.blogjava.net/gddg/archive/2015/09/16/427352.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gddg/comments/commentRss/427352.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gddg/services/trackbacks/427352.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <未完成> <br>容错系统的研究.<br>豆瓣可以搜索几本书.&nbsp;&nbsp;<a href='http://www.blogjava.net/gddg/archive/2015/09/16/427352.html'>阅读全文</a><img src ="http://www.blogjava.net/gddg/aggbug/427352.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-09-16 14:05 <a href="http://www.blogjava.net/gddg/archive/2015/09/16/427352.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></channel></rss>