草庐IT

c++ - 在使用 gdb 检查核心转储时,有没有办法运行函数(如 std::string.size())?

考虑一个产生某些段错误并中止的C++程序。在使用gdb进行常规调试时,我可以执行以下操作并查看结果(gdb)r(gdb)pstr_var.size()其中str_var在文件中定义为std::string。但是,我在使用核心转储进行调试时遇到了一些问题。在我通过在gdb中加载核心转储之后gdbEXECUTABLEcore.pid然后在gdb终端运行以下命令(gdb)pstr_var.size()gdb说“如果没有调试过程,你就不能这样做。”我只能做bt(查看堆栈跟踪)或直接打印std::string变量之类的事情,但是找不到一种简单的方法来检查一些信息,例如打印std::string的

c++ - 崩溃转储的最佳标志

我目前有一些代码会在我的应用程序崩溃时生成故障转储,但是我无法弄清楚哪些是最好的标志。目前我使用全内存(MiniDumpWithFullMemory),但这会产生32mg的崩溃文件。我应该使用哪些标志,既不会使崩溃文件变大,又能在使用它进行调试时提供最大的功能?有关标志的更多信息,请访问:http://www.debuginfo.com/articles/effminidumps.html 最佳答案 这并不总是如此笼统的答案。所需的标志在某种程度上取决于您要完成的任务或您可能要搜索的内容。也许您有线程问题,MiniDumpWithT

WSAsend 数据包的 C++ 奇怪十六进制转储

http://prntscr.com/2ctnoz我正在HookWSAsend函数并转储数据包。ASCII转储有效,但HEX转储有时会显示您在屏幕上看到的内容(FFFFFFDD),知道为什么吗?代码:intWINAPImyWSASend(SOCKETs,LPWSABUFlpBuffers,DWORDdwBufferCount,LPDWORDlpNumberOfBytesSent,DWORDdwFlags,LPWSAOVERLAPPEDlpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINElpCompletionRoutine){//PacketL

c++ - Vulkan:转储当前分配的对象?

每当Vulkan中的一个对象被销毁,启用VK_LAYER_LUNARG_object_tracker层,并安装调试报告时,它会报告销毁调用并通过回调给出剩余对象的总数。例如:INFO:[OBJTRACK]:OBJ_STATDestroyVK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXTobj0xcf43130(217totalobjsremain&1VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXTobjs).有没有什么方法可以获取有关仍在分配的对象的信息?编辑:检查object_tracker层(https:

c++ - 使用boost线程的多线程中的段错误(核心转储)

当尝试使用最多1个线程运行我的程序时,它可以正常工作一段时间(几秒或几分钟)但最终出现段错误(核心转储)或双重释放(faststop)错误。这里是线程运行的函数。//usedintheFunction[Added]typedeffolly::ProducerConsumerQueuePcapTask;structs_EntryItem{Columns*p_packet;//hassomearbitrarymethodandvariablesboost::mutex_mtx;};//_buffersConnection.wait_and_pop()Datawait_and_pop(){b

c++ - 使用核心转储从崩溃中恢复

一个C++程序在FreeBSD6.2上崩溃了,操作系统好心地创建了一个核心转储。是否可以截断一些堆栈帧,重置指令指针并重新启动gdb中的进程,以及如何? 最佳答案 Isitpossibletoamputatesomestackframes,resettheinstructionpointerandrestarttheprocessingdb?我假设您的意思是:更改进程状态,并将其设置为再次开始执行(就好像它从来没有崩溃过一样)。没有。一方面,您建议GDB(如果它神奇地具有此功能)如何处理您的文件描述符(当您的进程终止时内核自动关闭)

c++ - 核心转储的原因是什么?来自 oracle lib 的堆栈显示

我有一个coredmp,其中所有线程堆栈看起来都很正常,但一个堆栈显示如下。任何人都可以告诉我这可能的原因吗?我可以看到正在从oracle库调用exit,这是oracle的问题吗?当这种情况发生时,任何人都可以指导我吗?Thread3(process26454):#00x00002b803ceb54a8inexit()from/lib64/libc.so.6#10x00002b803bbe93f5inskgdbgcra()from/home/oracle/product/11g/lib/libclntsh.so.11.1#20x00002b803be9cdecinkpeDbgCrash

c++ - 使用 FFMPEG 编码 H264 时如何转储缓冲区?

我正在使用C++库将从网络摄像头捕获的图像写入libx264编码的mp4文件。编码工作正常,但当它开始时,它会向缓冲区写入40帧。当我关闭文件时,这些帧不会刷新,因此大约有6秒的视频未写入(cam约为6fps)。所以我调用:out_size=libffmpeg::avcodec_encode_video(codecContext,data->VideoOutputBuffer,data->VideoOutputBufferSize,data->VideoFrame);//ifzerosize,itmeanstheimagewasbufferedif(out_size>0){//...w

c++ - 转储类层次结构的 Visual C++ 编译器选项

MSVisualC++中是否有与GCC的-fdump-class-hierarchy等效的编译器选项?即显示虚函数表布局。 最佳答案 尝试cl.exe/d1reportAllClassLayout测试.cpp输出是这样的:classrequest_handlerAttributesize(8):+---0|name4|sdl+---classperfmonAttributesize(8):+---0|name4|register|(size=3)+---发现在做:+findstr/iclassc1xx.dll>c1xx.txt+然后

c++ - 当我将一个字符串放入节点->名称时,为什么会出现段错误(核心已转储)?

当我getline(cin,node->name)时出现段错误(核心转储)。我通过在我的输入函数中声明一个str字符串,然后node->name=str来修复。但是跑到cin>>node->year行,仍然遇到Segmentationfault。structclient{intcode;stringname;intyear;floatmaths,physics,chemistry;structclient*next;};structclient*input(){structclient*node=(structclient*)malloc(sizeof(structclient));c