- 博客(18)
- 资源 (1)
- 收藏
- 关注
转载 Chrome的Crash Report服务
本文翻译自debugInfo网站上一篇文章generating debug information with visual c++。由于Chrome的Crash产生的Debug信息和这个有一些关系,因此做一些背景知识介绍简介当我们采用一个调试器调试一个应用程序时,我们总是希望能单步跟踪代码、设置断点、查看变量值,哪怕变量是自定义的用户类型。但是对于一个EXE程序来说,基本上就是一堆二进
2009-12-08 15:11:00 2173 1
转载 找程序员做老公的十大好处
找了个程序员做老公,所以认识了很多程序员。以前就没对程序员有过不好的看法,现在则更不会。发现csdn上老有悲观的论调,说程序员找不到老婆。今天我就以一个程序员妻子的身份,来写写找程序员做老公的好处。希望能给各位mm有借鉴,找程序gg做男朋友。 一、找程序员不用担心外遇。程序员是对着电脑工作,周围同事大部分是男生。他的生活中基本接触不到mm,所以不会有办公室恋情的发生,也就不会有外遇问题发生
2009-12-08 15:02:00 444
转载 VC8/9中CRT函数对非法参数的处理
在VC8/9中,许多CRT函数会检查传入的参数的合法性。当CRT函数检测到一个非法参数传入时,它会调用“非法参数处理例程”。默认的非法参数处理例程是调用Watson Crash Reporting,让应用程序崩溃,并询问用户是否愿意发送崩溃数据转储给Microsoft分析。在Debug模式下,非法参数还会产生失败的断言。 可以通过调用_set_invalid_parameter_hand
2009-12-08 14:53:00 647
原创 VS中直接调用vim进行编辑
工具->外部工具->添加 命令:D:/Program Files/Vim/vim72/gvim.exe 参数:-f --servername gvim_vs2003 --remote-tab-silent "+set ts=4 sw=4 sts=4 call remote_foreground(gvim_vs2003) silent exe norm $(CurLine)
2009-10-28 15:26:00 709
原创 实现指针计数
#pragma once class UseCount{public: UseCount(void); ~UseCount(void); UseCount(const UseCount& useCount); UseCount& operator= (const UseCount& useCount); bool IsOnly();
2009-09-30 21:45:00 448
原创 实现编译期判断表达式
template struct CompileAssert {};#undef COMPILE_ASSERT#define COMPILE_ASSERT(expr, msg) / typedef CompileAssert msg[bool(expr) ? 1 : -1] 在编译期就可以出现错误,但expr应该必须是个常量,这个还没试验过,这个其实还有另一个写法
2009-09-24 21:50:00 508
转载 How to: Set a Thread Name in Native Code
//// Usage: SetThreadName (-1, "MainThread");//#include #define MS_VC_EXCEPTION 0x406D1388#pragma pack(push,8)typedef struct tagTHREADNAME_INFO{ DWORD dwType; // Must be 0x1000.
2009-09-24 19:23:00 544
原创 获得系统的版本,包括最新的win7
enum WinVersion { WINVERSION_PRE_2000 = 0, // Not supported WINVERSION_2000 = 1, WINVERSION_XP = 2, WINVERSION_SERVER_2003 = 3, WINVERSION_VISTA = 4, WINVERSION_2008 = 5, WINVERS
2009-09-16 15:39:00 436
原创 让自己的代码干净点
如果你发现团队和项目的代码十分漂亮————编写整洁、设计良好,并且很优雅————你就很可能会格外注意不去把它弄脏,就和那些消除员一样,即使有火在咆哮,你也不会想成为第一个开脏东西的人
2009-09-07 21:55:00 286
原创 源码一错误
偶然看 chrome中发现一错误 template HGLOBAL CreateGlobalData(const std::basic_string& str) { HGLOBAL data = ::GlobalAlloc(GMEM_MOVEABLE, ((str.size() + 1) * sizeof(charT))); if (data) {
2009-06-26 14:45:00 343
原创 线程间进行同一据处理
InterlockedCompareExchange InterlockedCompareExchange属于互锁函数 类似的还有下面的几个 (1) LONG InterlockedExchangeAdd ( LPLONG Addend, LONG Increment ); Addend为长整型变量的地址,Increment为想要在Addend指向的长整型变量上增
2009-06-24 21:05:00 902
原创 资源释放堆栈
// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file.#ifndef BASE_AT_EXIT_
2009-06-24 19:40:00 1796
原创 自动加锁类和自动解锁类
自动回锁类// A helper class that acquires the given Lock while the AutoLock is in scope.class AutoLock { public: explicit AutoLock(Lock& lock) : lock_(lock) { lock_.Acquire(); } ~AutoLock() {
2009-06-24 19:17:00 628
原创 加锁类
class Lock { public: Lock() : lock_() {} ~Lock() {} void Acquire() { lock_.Lock(); } void Release() { lock_.Unlock(); } // If the lock is not held, take it and return true. If the lock is alrea
2009-06-24 19:12:00 383
原创 加锁基类LockImpl
chrome中的加锁基类,去掉不用的部分 #pragma once#define DISALLOW_COPY_AND_ASSIGN(TypeName) / TypeName(const TypeName&); / void operator=(const TypeName&)class LockImpl{ typedef CRITICAL_SECTION
2009-06-24 19:01:00 528
原创 OnEndSession的使用
WM_QUERYENDSESSION消息是Windows向你询问Windows能否关闭WM_ENDSESSION消息表示提示你Windows即将关闭。你的程序在运行状态时,而系统由于某种原因需要注销或重启(或关机),此时操作系统会向你询问,但到你的同意(返回真)后,系统才能做进一步的操作. 在主框架窗口调用基类得成员函数之前添加你得代码即可,如: void CMainFra
2009-03-18 20:18:00 2070
原创 CFileDialog改变系统当前路径的问题
在调试程序中发现,有的几个对文件操作的命令,分开操作是成功的,但是当一个执行了,而另外一个就不能执行了。最后发现,是因为一个命令是打开文件对话框进行保存文件,而在打开文件夹的同时会改变系统的当前路径。如果下一次文件操作是用相对目录的命令,则会出现问题。解决有两个办法: 一个是用绝对路径。一个是设置让CFileDialog不改变系统的当前路径。如下设置: CFileDialog dlg
2008-06-21 16:44:00 1176
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人