﻿<?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>C++博客-酸菜猪蹄的程序人生</title><link>http://www.cppblog.com/cooleaf/</link><description>木下编程屯屯烫烫</description><language>zh-cn</language><lastBuildDate>Thu, 23 Apr 2026 04:11:33 GMT</lastBuildDate><pubDate>Thu, 23 Apr 2026 04:11:33 GMT</pubDate><ttl>60</ttl><item><title>使用MiniDumpWriteDump API 来生成程序的Dump [转帖]</title><link>http://www.cppblog.com/cooleaf/archive/2010/11/16/133767.html</link><dc:creator>cooelaf</dc:creator><author>cooelaf</author><pubDate>Tue, 16 Nov 2010 02:41:00 GMT</pubDate><guid>http://www.cppblog.com/cooleaf/archive/2010/11/16/133767.html</guid><wfw:comment>http://www.cppblog.com/cooleaf/comments/133767.html</wfw:comment><comments>http://www.cppblog.com/cooleaf/archive/2010/11/16/133767.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/cooleaf/comments/commentRss/133767.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cooleaf/services/trackbacks/133767.html</trackback:ping><description><![CDATA[<p><strong>MiniDumpWriteDump</strong>是MS DbgHelp.dll 中一个API, 用于导出当前运行的程序的Dump. 这个dll程序系统中就有, 但是很多软件, 都在自己的安装目录下保存了这个.dll的最新的版本.</p>
<p>为了测试这个API, 参考网上一些资料, 写了一个简单的C++ 程序. 目的是当有异常发生的时候, 自动生成Dump文件供之后的分析.
有了Dump文件, 我们就可以使用WinDBG等调试器来分析异常发生时的情况. 其实这个功能很多软件都有, 比如QQ, 魔兽世界, 等等.
它们在出现了异常的时候会弹出一个对话框, 让用户输入异常发生时的情况, 然后把异常的dump文件用email发回, 供开发者们分析修改bug.</p>
<p>不过有一点, 这里需要程序的调试符号文件(pdb文件). 对于Debug版来说, 是生成的, 但是Release版来说默认是不生成的.
可以设置VC的编译器, 让它在Release版的时候也生成调试信息. 这带来一个新的问题, 因为.pdb里面是保存了源文件的信息的,
为了避免泄密, 可以采用VS中的CVPack工具, 从中去除敏感的信息.</p>
<p>程序需要使用<strong>Dbghelp.h</strong> 和 <strong>Dbghelp.lib</strong> . 它们可以从MSDN找到.</p>
<p> </p>
<p><font color="#0000ff"><font color="#38761d">//最主要的函数, 生成Dump</font><br>
static void DumpMiniDump(HANDLE hFile, PEXCEPTION_POINTERS excpInfo)<br>
{<br>
if (excpInfo == NULL)<font color="#38761d"> //如果没有传入异常, 比如是在程序里面调用的, 生成一个异常</font><br>
{<br>
// Generate exception to get proper context in dump<br>
__try <br>
{<br>
OutputDebugString(_T("raising exception\r\n"));<br>
RaiseException(EXCEPTION_BREAKPOINT, 0, 0, NULL);<br>
} <br>
__except(DumpMiniDump(hFile, GetExceptionInformation()),<br>
EXCEPTION_CONTINUE_EXECUTION) <br>
{<br>
}<br>
} <br>
else<br>
{<br>
OutputDebugString(_T("writing minidump\r\n"));<br>
MINIDUMP_EXCEPTION_INFORMATION eInfo;<br>
eInfo.ThreadId = GetCurrentThreadId(); <font color="#38761d">//把需要的信息添进去</font><br>
eInfo.ExceptionPointers = excpInfo;<br>
eInfo.ClientPointers = FALSE;</font></p>
<p><font color="#0000ff"><font color="#38761d">&nbsp;&nbsp;&nbsp;  // 调用, 生成Dump. 98不支持<br>
// Dump的类型是小型的, 节省空间. 可以参考MSDN生成更详细的Dump</font>.<br>
MiniDumpWriteDump(<br>
GetCurrentProcess(),<br>
GetCurrentProcessId(),<br>
hFile,<br>
MiniDumpNormal,<br>
excpInfo ? &amp;eInfo : NULL,<br>
NULL,<br>
NULL);<br>
}<br>
}</font></p>
<p>下面的是程序部分:</p>
<p><font color="#0000ff">int _tmain(int argc, _TCHAR* argv[])<br>
{<br>
<font color="#38761d">// 创建一个Dump文件</font><br>
HANDLE hFile = CreateFile( _T("MiniDump.dmp"), GENERIC_READ | GENERIC_WRITE, <br>
0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); <br>
int code;<br>
__try <br>
{&nbsp;&nbsp;&nbsp;<br>
<font color="#38761d">// 把自己实现的main函数包装一下, 放在try .. except 块中. 这样出现了异常可以自动生成dump</font><br>
main_wrapper(argc, argv); <br>
}<br>
__except( code=GetExceptionCode(), DumpMiniDump(hFile, GetExceptionInformation() ),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  EXCEPTION_EXECUTE_HANDLER ) <font color="#38761d">//出现了异常, 记录异常的code, 生成dump!!</font><br>
{<br>
printf("%x\n", code);<br>
wchar_t msg[512];<br>
wsprintf(msg, L"Exception happened. Exception code is %x", code);<br>
MessageBox(NULL, msg, L"Exception", MB_OK); <font color="#38761d">//显示消息给用户</font><br>
}<br>
CloseHandle( hFile ); <font color="#38761d">//关闭Dump文件</font><br>
getchar();<br>
return 0; <br>
}</font></p>
<p>最下面是两个测试的函数, main_wrapper函数将调用test1, test1将会生成一个异常(非法内存写)</p>
<p><font color="#0000ff">void test1() {<br>
int *p;<br>
p = (int*)0x100; <br>
*p = 0; <font color="#38761d">//写0x100地址, 这个是非法的</font><br>
}<br>
<br>
void main_wrapper(int argc, _TCHAR* argv[]) {<br>
test1();<br>
}</font></p>
<p>运行, 异常被捕获了:</p>
<p><span><img  src="http://hiphotos.baidu.com/lff0305/pic/item/675ff6cdc09f4f7a0fb34583.jpg" class="blogimg" border="0"></span></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>同时, dump文件也生成了:</p>
<p><span><img  src="http://hiphotos.baidu.com/lff0305/pic/item/307ce2d3a935c0f4a9ec9a8f.jpg" class="blogimg" border="0"><br>
</span></p>
<p>用WinDBG打开Dump文件, 可以清楚的看出异常出现的情况:<br>
<br>
<span><img  src="http://hiphotos.baidu.com/lff0305/pic/item/5e5121ad81cca7224b36d690.jpg" style="width: 580px; height: 433.468px;" class="blogimg" border="0" height="433" width="580"></span><br>
<br>
<br>
从中可以比较清楚的看到异常发生的情况(Exception code), 异常出现的地址(test1函数, 偏移0x28). 因为这次测试的是Debug版, 有保存了源代码的.pdb文件, 所以WinDbg把源代码也列出来了. 这样可以非常容易的发现问题.</p>
<p>============================================</p>
参考:<br>
DbgHelp中的DumpAPI例子: http://www.debuginfo.com/examples/src/effminidumps/MiniDump.cpp <br>
CrashReport: 程序出现异常的时候显示发送错误的对话框, 并把Dump文件发送到指定的地址. http://code.google.com/p/crashrpt/<br>
XCrashReport: 与上面的类似的一个开源项目. http://www.codeproject.com/KB/debug/XCrashReportPt1.aspx<img src ="http://www.cppblog.com/cooleaf/aggbug/133767.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cooleaf/" target="_blank">cooelaf</a> 2010-11-16 10:41 <a href="http://www.cppblog.com/cooleaf/archive/2010/11/16/133767.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】Linux应用程序调试－－debug coredump</title><link>http://www.cppblog.com/cooleaf/archive/2010/11/16/133766.html</link><dc:creator>cooelaf</dc:creator><author>cooelaf</author><pubDate>Tue, 16 Nov 2010 02:40:00 GMT</pubDate><guid>http://www.cppblog.com/cooleaf/archive/2010/11/16/133766.html</guid><wfw:comment>http://www.cppblog.com/cooleaf/comments/133766.html</wfw:comment><comments>http://www.cppblog.com/cooleaf/archive/2010/11/16/133766.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cooleaf/comments/commentRss/133766.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cooleaf/services/trackbacks/133766.html</trackback:ping><description><![CDATA[<br>
<br>
作者：&lt;leohe.leohe@gmail.com&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;   Linux系统中在应用程序运行过程中经常会遇到程序突然崩溃，提示：Segmentation
fault，这是因为应用程序收到了SIGSEGV信号。这个信号提示当进程发生了无效的存储访问，当接收到这个信号时，缺省动作是：终止w/core。
终止w/core的含义是：在进程当前目录生成core文件，并将进程的内存映象复制到core文件中，core文件的默认名称就是&#8220;core&#8221;（这是
Unix类系统的一个由来已久的功能）。<br>
&nbsp;&nbsp;&nbsp;
事实上，并不是只有SIGSEGV信号产生coredump，还有下面一些信号也产生coredump：SIGABRT（异常终止）、SIGBUS（硬件
故障）、SIGEMT（硬件故障）、SIGFPE（算术异常）、SIGILL（非法硬件指令）、SIGIOT（硬件故
障），SIGQUIT，SIGSYS（无效系统调用），SIGTRAP（硬件故障）等。<br>
&nbsp;&nbsp;&nbsp;   在程序的开发调试阶段（尤其是大型软件开发），发生程序异常崩溃时常规的调试方法常常是无比的痛苦：无穷的log中也不见得有什么有意义的信息。好在GDB提供和利用core文件进行调试的途径，大大方便了这类问题的调试。<br>
<br>
&nbsp;&nbsp;&nbsp;   下面我们通过一个简单的例子来看看怎么通过GDB来调试一个违规访问内存导致的程序崩溃。这里我们顺便讲讲动态库的调试。<br>
<br>
/******** mylib.h **********/<br>
#ifndef __MY_LIB_H__<br>
#define __MY_LIB_H__<br>
<br>
int add(int x, int y);<br>
<br>
#endif // __MY_LIB_H__<br>
/********  end  **********/<br>
<br>
<br>
<br>
/******** mylib.c **********/<br>
#include &lt;stdlib.h&gt;<br>
#include "mylib.h"<br>
<br>
int add(int x, int y)<br>
{<br>
&nbsp;&nbsp;&nbsp;   char* pc = NULL;<br>
&nbsp;&nbsp;&nbsp;   *pc = 10;<br>
<br>
&nbsp;&nbsp;&nbsp;   return x + y;<br>
}<br>
/********  end  **********/<br>
<br>
/******** main.c **********/<br>
<br>
#include &lt;stdio.h&gt;<br>
#include &lt;stdlib.h&gt;<br>
<br>
#include "mylib.h"<br>
<br>
int main (void)<br>
{<br>
&nbsp;&nbsp;&nbsp;   int ret = -1;<br>
&nbsp;&nbsp;&nbsp;   int a = 10, b = 20;<br>
&nbsp;&nbsp;&nbsp;   ret = add(a, b);<br>
<br>
&nbsp;&nbsp;&nbsp;   printf("The result is:  %d\n", ret);<br>
<br>
&nbsp;&nbsp;&nbsp;   return 0;<br>
}<br>
/********  end  **********/<br>
<br>
#####################################<br>
#  File Name: Makefile<br>
#<br>
#####################################<br>
<br>
CC = gcc<br>
LD = gcc<br>
<br>
all:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   $(CC) mylib.c -g -I. -fPIC -shared -o libmylib.so<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   $(CC) main.c  -g -I. -L. -lmylib -o test<br>
<br>
clean:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   rm *.so test<br>
#############&nbsp;&nbsp;   END&nbsp;&nbsp;   ###############<br>
<br>
&nbsp;&nbsp;&nbsp;   首先将上面的代码分别存储到相应的目录,名称为：mylib.h、mylib.c、main.c、Makefile。<br>
<br>
1）编译测试代码。注）编译时的 -g 选项是必须的。<br>
[xxx@yyy]$ make<br>
gcc mylib.c -g -I. -fPIC -shared -o libmylib.so<br>
gcc main.c  -g -I. -L. -lmylib -o t<br>
<br>
通过ls命令我们可以看到生成了测试程序test.<br>
[xxx@yyy]$ ls<br>
libmylib.so  main.c  Makefile  mylib.c  mylib.h  test<br>
<br>
2）执行测试程序<br>
[xxx@yyy]$ ./test<br>
./test: error while loading shared libraries: libmylib.so: cannot open shared object file: No such file or directory<br>
<br>
这个错误表明程序在运行阶段不能找到相应的动态库文件，此时需要通过环境变量 LD_LIBRARY_PATH 来指定运行期动态库的搜索目录，我们的动态库就在当前目录，如下：<br>
<br>
[xxx@yyy]$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.<br>
<br>
3）再次执行测试程序<br>
[leo@localhost debug]$ ./test<br>
Segmentation fault<br>
[leo@localhost debug]$ ls<br>
libmylib.so  main.c  Makefile  mylib.c  mylib.h  test<br>
<br>
4）设置core文件大小<br>
Segmentation fault如期而至，但是却没有我们更想见到的core文件！<br>
原来系统在默认情况下core文件的大小设置为0，换句话讲也就是不产生core文件。我们可以通过 ulimit 命令来修改core文件的大小，unlimited表示不限制core文件的大小，如下（设置core文件的大小需要root权限）：<br>
[root@yyy]# ulimit -c unlimited<br>
[root@yyy]# ./test<br>
Segmentation fault (core dumped)<br>
[root@yyy]# ls<br>
core.2890  libmylib.so  main.c  Makefile  mylib.c  mylib.h  test<br>
<br>
5）设置core文件的格式，输出路径<br>
通过下面命令我们还可以指定core文件的命名格式，路径等（需要root权限）：<br>
[root@yyy]# echo "core_%e_%s" &gt;/proc/sys/kernel/core_pattern<br>
[root@yyy]# ./test<br>
Segmentation fault (core dumped)<br>
[root@yyy]# ls<br>
core.2890  core_test_11.2898  libmylib.so  main.c  Makefile  mylib.c  mylib.h  test<br>
<br>
6）调试<br>
[root@yyy]# gdb test core.2890<br>
GNU gdb Red Hat Linux (6.5-8.fc6rh)<br>
Copyright (C) 2006 Free Software Foundation, Inc.<br>
GDB is free software, covered by the GNU General Public License, and you are<br>
welcome to change it and/or distribute copies of it under certain conditions.<br>
Type "show copying" to see the conditions.<br>
There is absolutely no warranty for GDB.  Type "show warranty" for details.<br>
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".<br>
<br>
Core was generated by `./test'.<br>
Program terminated with signal 11, Segmentation fault.<br>
Error while mapping shared library sections:<br>
libmylib.so: Success.<br>
Reading symbols from /home/xxx/tst/libmylib.so...done.<br>
Loaded symbols for libmylib.so<br>
Reading symbols from /lib/i686/libc.so.6...done.<br>
Loaded symbols for /lib/i686/libc.so.6<br>
Reading symbols from /lib/ld-linux.so.2...done.<br>
Loaded symbols for /lib/ld-linux.so.2<br>
#0  0x00a8969c in ?? ()<br>
(gdb) <br>
<br>
键入GDB命令 where<br>
(gdb) where<br>
#0  0x001ec44c in ?? ()<br>
#1  0x00000000 in ?? ()<br>
<br>
?? ()并不是我们想看到的，之所以这样，是因为GDB不能正确加载我们编写的动态库libmylib.so，我们需要在这里设置GDB的动态库搜索路径,如下：<br>
<br>
(gdb) set solib-search-path .<br>
Reading symbols from /home/xxx/test/tst/libmylib.so...done.<br>
Loaded symbols for /home/xxx/test/tst/libmylib.so<br>
Reading symbols from /lib/i686/libc.so.6...done.<br>
Loaded symbols for /lib/i686/libc.so.6<br>
Reading symbols from /lib/ld-linux.so.2...done.<br>
Loaded symbols for /lib/ld-linux.so.2<br>
<br>
可以看到GDB已经加载了libmylib.so，再次键入where命令：<br>
(gdb) where<br>
#0  0x001ec44c in add (x=10, y=20) at mylib.c:8<br>
#1  0x0804847c in main () at main.c:12<br>
(gdb)<br>
<br>
这次我们期待的结果出现了，GDB清楚的列出了错误出现的位置：mylib.c的第8行，好了，到那里去改code吧！<img src ="http://www.cppblog.com/cooleaf/aggbug/133766.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cooleaf/" target="_blank">cooelaf</a> 2010-11-16 10:40 <a href="http://www.cppblog.com/cooleaf/archive/2010/11/16/133766.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在Linux Shell中输入中文（转贴）</title><link>http://www.cppblog.com/cooleaf/archive/2008/11/20/67350.html</link><dc:creator>cooelaf</dc:creator><author>cooelaf</author><pubDate>Thu, 20 Nov 2008 00:49:00 GMT</pubDate><guid>http://www.cppblog.com/cooleaf/archive/2008/11/20/67350.html</guid><wfw:comment>http://www.cppblog.com/cooleaf/comments/67350.html</wfw:comment><comments>http://www.cppblog.com/cooleaf/archive/2008/11/20/67350.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cooleaf/comments/commentRss/67350.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cooleaf/services/trackbacks/67350.html</trackback:ping><description><![CDATA[用户要想确定在所使用的Linux系统上有没有加上中文环境，具体可分为以下两步来进行。 <br>首先对于bash，需要在/etc/profile或$HOME/.profile文件里加上下面的语句： <br><ccid_nobr>
<table style="width: 406px; height: 50px;" bordercolordark="#ffffff" bordercolorlight="black" align="center" border="1" cellpadding="2" cellspacing="0">
    <tbody>
        <tr>
            <td class="code" style="font-size: 9pt;" bgcolor="#e6e6e6">
            <pre><ccid_code>stty cs8 -istrip <br>stty pass8</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr><br>执行下面的命令： <br><ccid_nobr>
<table bordercolordark="#ffffff" bordercolorlight="black" align="center" border="1" cellpadding="2" cellspacing="0" width="400">
    <tbody>
        <tr>
            <td class="code" style="font-size: 9pt;" bgcolor="#e6e6e6">
            <pre><ccid_code>#export LANG =C <br>#export LC_CTYPE=iso-8859-1</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr><br>然后，在$HOME/.inputrc里加上以下语句： <br><ccid_nobr>
<table bordercolordark="#ffffff" bordercolorlight="black" align="center" border="1" cellpadding="2" cellspacing="0" width="400">
    <tbody>
        <tr>
            <td class="code" style="font-size: 9pt;" bgcolor="#e6e6e6">
            <pre><ccid_code>set convert -meta off <br>set output -meta on</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr><br>修改之后，用户不必重新启动系统，只需新开一个虚拟终端，或者注销后再登录即可生效。<br><br><span style="font-size: 8pt;">（转载自http://developer.51cto.com/art/200509/3819.htm）</span><br><br><img src ="http://www.cppblog.com/cooleaf/aggbug/67350.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cooleaf/" target="_blank">cooelaf</a> 2008-11-20 08:49 <a href="http://www.cppblog.com/cooleaf/archive/2008/11/20/67350.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dd命令使用(转载)</title><link>http://www.cppblog.com/cooleaf/archive/2008/08/22/59617.html</link><dc:creator>cooelaf</dc:creator><author>cooelaf</author><pubDate>Fri, 22 Aug 2008 01:47:00 GMT</pubDate><guid>http://www.cppblog.com/cooleaf/archive/2008/08/22/59617.html</guid><wfw:comment>http://www.cppblog.com/cooleaf/comments/59617.html</wfw:comment><comments>http://www.cppblog.com/cooleaf/archive/2008/08/22/59617.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cooleaf/comments/commentRss/59617.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cooleaf/services/trackbacks/59617.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 先简要介绍dd的参数，后边通过几个实例介绍dd的应用，参考了其他网友的资料，在此一并感谢小菜水平有限文中有什么错误请大家指正，关于dd还有什么好的使用方法，可以贴出来，小菜会及时更新dd&nbsp;是&nbsp;Linux/UNIX&nbsp;下的一个非常有用的命令，作用是用指定大小的块拷贝一个文件，并在拷贝的同时进行指定的转换。1.&nbsp;命令简介dd&n...&nbsp;&nbsp;<a href='http://www.cppblog.com/cooleaf/archive/2008/08/22/59617.html'>阅读全文</a><img src ="http://www.cppblog.com/cooleaf/aggbug/59617.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cooleaf/" target="_blank">cooelaf</a> 2008-08-22 09:47 <a href="http://www.cppblog.com/cooleaf/archive/2008/08/22/59617.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在应用程序中禁止输入法工具栏</title><link>http://www.cppblog.com/cooleaf/archive/2008/01/27/41975.html</link><dc:creator>cooelaf</dc:creator><author>cooelaf</author><pubDate>Sun, 27 Jan 2008 08:43:00 GMT</pubDate><guid>http://www.cppblog.com/cooleaf/archive/2008/01/27/41975.html</guid><wfw:comment>http://www.cppblog.com/cooleaf/comments/41975.html</wfw:comment><comments>http://www.cppblog.com/cooleaf/archive/2008/01/27/41975.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cooleaf/comments/commentRss/41975.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cooleaf/services/trackbacks/41975.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文列举了在windows下禁用输入法的API。&nbsp;&nbsp;<a href='http://www.cppblog.com/cooleaf/archive/2008/01/27/41975.html'>阅读全文</a><img src ="http://www.cppblog.com/cooleaf/aggbug/41975.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cooleaf/" target="_blank">cooelaf</a> 2008-01-27 16:43 <a href="http://www.cppblog.com/cooleaf/archive/2008/01/27/41975.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 如何启动后（不）进入X界面</title><link>http://www.cppblog.com/cooleaf/archive/2007/10/16/34368.html</link><dc:creator>cooelaf</dc:creator><author>cooelaf</author><pubDate>Tue, 16 Oct 2007 10:41:00 GMT</pubDate><guid>http://www.cppblog.com/cooleaf/archive/2007/10/16/34368.html</guid><wfw:comment>http://www.cppblog.com/cooleaf/comments/34368.html</wfw:comment><comments>http://www.cppblog.com/cooleaf/archive/2007/10/16/34368.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cooleaf/comments/commentRss/34368.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cooleaf/services/trackbacks/34368.html</trackback:ping><description><![CDATA[<p> <div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:791b6f9e-c07e-425f-adff-50520dda1aeb" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati 标签:  		<a href="http://technorati.com/tags/Linux/" rel="tag">Linux</a> 		,  		<a href="http://technorati.com/tags/XWindow/" rel="tag">XWindow</a> 		,  		<a href="http://technorati.com/tags/Startup/" rel="tag">Startup</a> 		</div></p> <p>&nbsp;</p> <p>修改/etc/inittab文件。将id:<font color="#ff0000">5</font>:initdefault: 中的5修改为3，表示不进入X界面。</p> <p>反之亦然。</p><img src ="http://www.cppblog.com/cooleaf/aggbug/34368.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cooleaf/" target="_blank">cooelaf</a> 2007-10-16 18:41 <a href="http://www.cppblog.com/cooleaf/archive/2007/10/16/34368.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Fedora4 下samba服务器的配置</title><link>http://www.cppblog.com/cooleaf/archive/2007/10/10/33862.html</link><dc:creator>cooelaf</dc:creator><author>cooelaf</author><pubDate>Tue, 09 Oct 2007 16:43:00 GMT</pubDate><guid>http://www.cppblog.com/cooleaf/archive/2007/10/10/33862.html</guid><wfw:comment>http://www.cppblog.com/cooleaf/comments/33862.html</wfw:comment><comments>http://www.cppblog.com/cooleaf/archive/2007/10/10/33862.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/cooleaf/comments/commentRss/33862.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cooleaf/services/trackbacks/33862.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文介绍了Fedora下Samba服务器的配置。&nbsp;&nbsp;<a href='http://www.cppblog.com/cooleaf/archive/2007/10/10/33862.html'>阅读全文</a><img src ="http://www.cppblog.com/cooleaf/aggbug/33862.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cooleaf/" target="_blank">cooelaf</a> 2007-10-10 00:43 <a href="http://www.cppblog.com/cooleaf/archive/2007/10/10/33862.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于组播（多播）</title><link>http://www.cppblog.com/cooleaf/archive/2007/09/27/33060.html</link><dc:creator>cooelaf</dc:creator><author>cooelaf</author><pubDate>Thu, 27 Sep 2007 14:29:00 GMT</pubDate><guid>http://www.cppblog.com/cooleaf/archive/2007/09/27/33060.html</guid><wfw:comment>http://www.cppblog.com/cooleaf/comments/33060.html</wfw:comment><comments>http://www.cppblog.com/cooleaf/archive/2007/09/27/33060.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cooleaf/comments/commentRss/33060.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cooleaf/services/trackbacks/33060.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文介绍了多播编程的要点，不涉及具体代码。&nbsp;&nbsp;<a href='http://www.cppblog.com/cooleaf/archive/2007/09/27/33060.html'>阅读全文</a><img src ="http://www.cppblog.com/cooleaf/aggbug/33060.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cooleaf/" target="_blank">cooelaf</a> 2007-09-27 22:29 <a href="http://www.cppblog.com/cooleaf/archive/2007/09/27/33060.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>测试一下Windows Live Writer</title><link>http://www.cppblog.com/cooleaf/archive/2007/09/27/33055.html</link><dc:creator>cooelaf</dc:creator><author>cooelaf</author><pubDate>Thu, 27 Sep 2007 13:09:00 GMT</pubDate><guid>http://www.cppblog.com/cooleaf/archive/2007/09/27/33055.html</guid><wfw:comment>http://www.cppblog.com/cooleaf/comments/33055.html</wfw:comment><comments>http://www.cppblog.com/cooleaf/archive/2007/09/27/33055.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/cooleaf/comments/commentRss/33055.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cooleaf/services/trackbacks/33055.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文介绍了如何使用Live Writer来写blog。&nbsp;&nbsp;<a href='http://www.cppblog.com/cooleaf/archive/2007/09/27/33055.html'>阅读全文</a><img src ="http://www.cppblog.com/cooleaf/aggbug/33055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cooleaf/" target="_blank">cooelaf</a> 2007-09-27 21:09 <a href="http://www.cppblog.com/cooleaf/archive/2007/09/27/33055.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>指针数组和数组指针</title><link>http://www.cppblog.com/cooleaf/archive/2006/05/19/7418.html</link><dc:creator>cooelaf</dc:creator><author>cooelaf</author><pubDate>Fri, 19 May 2006 09:48:00 GMT</pubDate><guid>http://www.cppblog.com/cooleaf/archive/2006/05/19/7418.html</guid><wfw:comment>http://www.cppblog.com/cooleaf/comments/7418.html</wfw:comment><comments>http://www.cppblog.com/cooleaf/archive/2006/05/19/7418.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.cppblog.com/cooleaf/comments/commentRss/7418.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cooleaf/services/trackbacks/7418.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/cooleaf/archive/2006/05/19/7418.html'>阅读全文</a><img src ="http://www.cppblog.com/cooleaf/aggbug/7418.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cooleaf/" target="_blank">cooelaf</a> 2006-05-19 17:48 <a href="http://www.cppblog.com/cooleaf/archive/2006/05/19/7418.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>