
调试
tobealv
这个作者很懒,什么都没留下…
展开
-
用gdb检查段错误(segment fault)
原创 2023-12-27 17:46:32 · 549 阅读 · 0 评论 -
Make高亮error和warning
make 2>&1 | grep -E "error|warning"原创 2020-10-19 17:58:24 · 636 阅读 · 0 评论 -
linux查看程序依赖的动态库
明明Proj程序是用Qt5编译出来的,看起来它却找Qt4库。因为Proj用的某so还是用Qt4编译的,这个错误实际上不是针对Proj程序而是这个so报的,将这个so用Qt5编译就可以了。原创 2015-02-07 10:59:04 · 1061 阅读 · 1 评论 -
运行时链接动态库,报symbol lookup error: undefined symbol:错误
在exe里调用了so的函数,运行exe时提示symbol lookup error: undefined symbol:错误,在网上查原因,一般都说是so版本可能与exe不匹配,但是我的exe和so都是新编译的,确定版本没问题,后来怀疑是不是c++编译时函数别名不一致,但是也没问题。百思不得其解,最终发现是so库命名的问题,我把so库命名为util,库编译出来是libutil.so,实际上,操作系...原创 2019-11-21 08:57:50 · 8386 阅读 · 0 评论 -
linux下动态库soname简介
Linux 支持两种类型的库,每一种库都有各自的优缺点。静态库包含在编译时静态绑定到一个程序的函数。动态库则不同,它是在加载应用程序时被加载的,而且它与应用程序是在运行时绑定的。静态库较适宜于较小的应用程序,因为它们只需要最小限度的函数。而对于需要多个库的应用程序来说,则适合使用共享库,因为它们可以减少应用程序对内存(包括运行时中的磁盘占用和内存占用)的占用。这是因为多个应用程序可...转载 2019-11-12 11:04:47 · 1117 阅读 · 0 评论 -
Windows 7 X64位平台下,VC6调试运行程序,中断调试无法退出
用VC6在64位Windows7下调试的时候,如果中断(Shift+F5)调试,程序无法退出。问题描述:当点击F5开始一个项目的调试时,程序在设置的断点处停止,这时按下Shift+F5后,vc6可以退出调试状态,但是WINDOWS系统的任务栏上会留下前面调试时产生的进程图标。该进程不能被结束,即使使用任务管理器,也不可以。这时如果再次按下F5调试,并按下Shift+F5后,任务栏上会留下两转载 2014-12-29 17:54:46 · 582 阅读 · 0 评论 -
设置屏蔽崩溃提示
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);原创 2015-01-20 08:56:17 · 797 阅读 · 0 评论 -
屏蔽runtime error等错误的弹出框
1. 定义自己的异常处理回掉函数long __stdcall _MyCallback(_EXCEPTION_POINTERS* excp){ //EXCEPTION_EXECUTE_HANDLER equ 1 表示我已经处理了异常,可以优雅地结束了 //EXCEPTION_CONTINUE_SEARCH equ 0 表示我不处理,其他人来吧,于是windows调用默认的处理原创 2015-06-04 16:07:50 · 3511 阅读 · 0 评论 -
MFC程序带参数运行
下面的例子可以用来判断程序运行的时候是否使用了-c,-s或者-p选项,具体程序中大家可以按照例子做简单改动即可。第一步:从CCommandLineInfo重载一个类CWzdCommandLineInfo,实现方式如下#if !definedWZDCOMMANDLINEINFO_H#define WZDCOMMANDLINEINFO_H// WzdCommandLineInfo.转载 2016-02-29 09:15:29 · 1656 阅读 · 0 评论 -
MinGW安装说明
1. 手动建立目录c:\MinGW\var\cache\mingw-get 将packages文件夹拷贝到此目录下。 备注:运行mingw-get-inst-20120426.exe安装时实际上是先下载packages中的组件,此处将下载好的packages放到这里就免得下载了。 2. 运行mingw-get-inst-20120426.exe,按下图所示步骤选项安装,尤其注意必须安装在C...原创 2018-03-15 18:14:48 · 2591 阅读 · 1 评论 -
gdb调试多进程与多线程
地址:https://blog.youkuaiyun.com/snow_5288/article/details/72982594转载 2018-10-15 15:51:11 · 163 阅读 · 0 评论 -
gdb调试core文件快速定位core dump位置
core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIGSEGV信号,然后就会core dump)在程序运行的过程中,有的时候我们会遇到Segment fault(段错误)这样的错误。这种看起来比较困难,因为没有任何的栈、trace信息输出。该种类型的...原创 2018-11-07 14:39:36 · 18260 阅读 · 1 评论 -
搭建gdb调试环境
1. 下载源码 http://www.gnu.org/software/gdb/download/ 2. su root 切换到root用户3. 打算安装到/usr/local/arm-gdb目录下,先手动创建该目录mkdir -p /usr/local/arm-gdbchown -R mars /usr/local/arm-gdb4. cd到源码包所在目录/usr/src...原创 2016-11-30 14:42:28 · 4245 阅读 · 0 评论 -
Eclipse调试运行开源代码
1、先常规执行./configure命令生成Makefile2、打开Eclipse,在Project Explorer中直接右键,选择import->c/c++->Existing Code as Makefile Project,下一步,Browse到代码目录,确定即可。3、编译的话,在Eclipse中执行Build即可。...原创 2018-07-27 14:23:36 · 725 阅读 · 0 评论 -
在eclipse 中调试多进程linux程序
在单步fork命令的代码之前, 在console输入set follow-fork-mode child就可以接下来步进入子进程。在出子进程时输入 set follow-fork-mode parent步进到父进程。其中console要选择<xxx> [c/c++ application] gdb,方法是在console窗口工具栏的小电脑(display slected co...原创 2018-06-23 12:50:34 · 1245 阅读 · 0 评论 -
ubuntu中使用eclipse调试libevent
前言 通常我们在使用libevent时,是先把libevent编译成库,然后应用程序链接该库,但是这种方式下,调试应用程序,单步是无法进入到libevent函数里面的。为此,我们换一种思路:直接将libevent源码当作应用程序本身的代码进行编译,然后运行、调试。 由于libevent源码中包含有跨平台的内容,例如在ubuntu下编译时需要排除掉与其它操作系统相关的的一些源文件,而...原创 2018-06-08 14:32:55 · 412 阅读 · 0 评论 -
throw异常 导致 Unhandled exception in test.exe(KERNEL32.DLL):0xE06D7363
原因是:调用throw的外层没有try...catch原创 2014-10-30 14:43:38 · 2216 阅读 · 0 评论 -
关于VC6调试程序时显示Unicode字符串不全的问题
这一阶段一直在和Unicode较劲,这东西还真是烦人,随时要注意加“_T”不说,还老是要在宽字符、窄字符之间倒来倒去,最要命的是调试程序时,Unicode字符串总是显示不全,只显示第一个字母。 很疑惑,我向来把MS的VC6奉为经典,不会连个字符串显示都这么差吧?? 终于有一日,在设置项目属性时,误打误撞点了Tools-->Options,一番察看之后,竟然发现了“Display unic转载 2014-08-21 23:06:30 · 1379 阅读 · 0 评论 -
VC中关于编译时候的错误提示:is not a precompiled header
<br />从project->settings->c/c++页,左边列表选择出错的相关文件,,选择Not using precomiled headers。原创 2010-12-17 18:10:00 · 1266 阅读 · 0 评论 -
编译时一些莫名其妙的错误
1.fatal error C1004: unexpected end of file found由于class定义忘了分号;原创 2010-12-30 11:02:00 · 593 阅读 · 0 评论 -
vc无法调试
<br />今天遇到了一个超级郁闷的问题,vc在调试的时候走到一定步骤就抛出异常了,原来是小红帽冲突,卸载了小红帽就可以了原创 2011-01-05 16:42:00 · 500 阅读 · 0 评论 -
使用windbg捕获程序崩溃
<br />一直以来都不知道如何让windbg可以捕获程序崩溃,在网上找到一片文章http://www.codeproject.com/KB/debug/automemorydump.aspx。<br /> <br />原来如此简单:<br />(1)下载安装windbg<br />(2)cmd到windbg的安装目录中运行'Windbg -I'<br />这样就ok了。<br /> <br />在上面那篇文章中还说到改什么注册表,不过我没改,也照样可以捕获崩溃,所以就不管那个了,能用就行原创 2011-05-07 19:12:00 · 1429 阅读 · 0 评论 -
软件调试笔记
(1)每句代码都有一个特权记号,cpu在执行的时候首先把这个记号存到“特权寄存器”中,执行的时候根据这个特权级别决定该代码能访问哪些数据1.每个任务有自己的很多段.每个段的信息用一个段描述符维护.多个段描述符构成了段描述符表.2.段描述符表分为三种:GDT(全局),LDT(任务),IDT(cpu中断)3.段选择子:一个64位的值,内容是段描述符表中的段描述符的索引号,其中有一位标示了是指向GDT的原创 2011-06-13 09:54:00 · 556 阅读 · 0 评论 -
一个被‘\0'分割成多段的字符串无法全部显示
在VC调试窗口中,或OutDebugViewString输出的字符串结果中,如果字符串中间用'\0'分割了,则它们只显示第一段,后面的内容显示不出。原创 2011-09-09 17:31:24 · 731 阅读 · 0 评论 -
VC中如何产生 Release 版本二进制文件对应的 PDB 文件(转)
在 Visual C++ 6.0 中的方法:打开 Visual C++ 6.0 的 Workspace 文件(*.dsw); 进入 Project 菜单,选择 Settings 菜单项 (Project->Settings),打开项目设置对话框; 在 “Settings转载 2011-09-16 09:52:47 · 962 阅读 · 0 评论 -
格式化输出调试信息
/** * 函数:XOutputDebugString * 描述:格式化输出Debug信息 */void XOutputDebugString(LPCTSTR lpszArgs, ...){ int nRet = -1; TCHAR szBuff[1024];原创 2011-09-17 12:08:38 · 594 阅读 · 0 评论 -
FormatMessage
/** * 函数:XFormatMessage * 描述:格式化GetLastError信息 * 参数: * lpszFunc 调用函数名字 * lpszMsg 输出错误信息 * nMsgBuff 缓冲区长度 * 返回:错误码 */DWORD XForm原创 2011-04-18 17:31:00 · 559 阅读 · 0 评论 -
如何调试程序的 Release 版本
很多时候程序的 Debug 版本运行没有任何问题,但是一旦发布 Release 版本后,运行就出错,着实让人郁闷。大家知道,VC++ 中 Release 版本是对无法对源代码进行调试的。一般的做法是在怀疑有错误的代码前后插入MessageBox 函数,在函数中显示可能导致错误的变量的值。或者插入写文件的语句,输出可能导致错误的变量的值到一个记录文件。其实,除了上面讲的这个办法之外,还有其它的途径来转载 2011-12-26 09:07:40 · 673 阅读 · 0 评论 -
WinDbg符号设置
#1 环境变量_NT_SYMBOL_PATH = SRV*d:\symbols*http://msdl.microsoft.com/download/symbols #2 WinDbg symbols_path 设置 d:\symbols;SRV*d:\symbols*http://msdl.microsoft.com/download/symbolswindbg 将会按照路径转载 2011-11-17 21:03:37 · 701 阅读 · 0 评论 -
WinDbg使用积累
1、如何在WinDbg调试的时候插入断点举例来说,程序有个函数叫做DelProc()。在WinDbg中启动了调试并加载了程序(包括符号)后,(假如进程叫test.exe),输入x test!Del*,便可以显示出所有Del开头的符号。比如显示的关于DelProc()的如下:006e4054 test!DelProc (void *),说明调试符号表中包含DelProc。接下来,就可以给它下原创 2010-11-07 18:18:00 · 1877 阅读 · 2 评论 -
VC6.0编译器参数设置
<br />VC6.0编译器参数的设置主要通过VC的菜单项Project->Settings->C/C++页来完成。我们可以看到这一页的最下面Project Options中的内容,一般如下:<br /><br />/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Fp"Debug/WritingDlgTest.pch" /Yu"stdafx.h" /Fo"转载 2011-01-08 20:18:00 · 560 阅读 · 0 评论 -
VC程序重定向printf到console窗口
本方法简单易用,适用于VC6、VC.NET2003假定你创建的VC应用程序叫做ImageFilter,那么只需添加如下代码即可:[1] 打开ImageFilter.cpp文件,增加#include #include [2] 在该文件的'CImageFilterApp theApp;'后面增加一个函数:void InitConsoleWindow转载 2014-02-26 12:37:53 · 3615 阅读 · 0 评论 -
vc调试或运行程序的时候指定目录
project setting->debug->Executable for debug sessionproject setting->debug->working directory原创 2014-03-06 16:18:42 · 1177 阅读 · 0 评论 -
VC6.0提示输入mfcs42ud.pdb路径
调试UNICODE程序时,要求输入mfcs42ud.pdb路径 在Debug模式下调试UNICODE编码的程序时(以前是MBCS编码,没有出现过此问题),提示"Please enter the path for mfcs42ud.pdb",虽然取消后可能继续运行,但是无法在监视窗口查看变量内容。解决方法: 从VS6的安装盘上VC98/MFC/LIB下的MFCS42转载 2014-08-21 23:01:48 · 1288 阅读 · 0 评论 -
winocc.cpp 279错误的解决方法
<br />程序编译时出现winocc.cpp 279错误,一般是使用了MoveWindow的问题<br />想在对话框onSize时触发函数,设置控件的大小<br /><br />程序一运行就执行了OnSize函数,此时控件还未生成,此时对控件进行MoveWindow操作就会出现winocc.cpp 279错误<br /><br />解决的方法就是,在控件MoveWindow时判断一下是否存在<br />if(m_content.m_hWnd) //m_content为控件变量名,转载 2010-12-02 15:35:00 · 2065 阅读 · 0 评论