我有一个大小为190MB的C++二进制文件。当我将此二进制文件放入dbx并尝试创建断点时,dbx挂起。当dbx挂起时,我观察到它的内存迅速增长到10GB以上。TotalView允许我设置断点;但是,它显示的所有数据都是伪造的。我已经成功调试了许多其他较小的二进制文件,所以我的直觉是这个二进制文件的大小是问题所在。二进制:ELF32位MSB可执行文件SPARC32PLUS版本1,V8+必需,动态链接,未剥离。编译器:CC:SunC++5.9SunOS_sparc2007/05/03。Dbx:7.6SunOS_sparc2007/05/03。总View:8.2.0-0操作系统:Solari
我正在使用cygwin在Windows上运行一个shell脚本,我在其中多次执行一个程序,每次都使用不同的参数。有时,程序会为某些输入参数生成段错误。我想生成一个文本文件,shell脚本可以在其中写入哪些输入,程序失败了。基本上我想在每次运行时检查程序的返回值。这里我假设当程序失败时,它返回一个与成功时不同的值。我不确定这一点。可执行文件是一个C++程序。这有可能吗?请指导。如果可能,请提供shell脚本的代码片段。此外,请说明返回的所有值是什么。我的脚本是.sh文件。 最佳答案 最后一个完成的程序的返回值在环境变量$?中可用。
这是我拥有的“sleeper.exe”的源代码:intmain(intargc,char**argv){cout当我像这样从命令行调用时:C:\sleeper5我明白了5在命令行中,所以这工作正常..现在我正尝试从其他一些exe调用此exe,如下所示:std::cout这里ret也是5,我敢肯定,因为我在命令行中看到它很好:retis:5在同一目录中有一个名为config.mpap的文件,我是这样从这里读取值的:std::ifstreammyReadFile;myReadFile.open("config.mpap");charoutput[400];if(myReadFile.is_
假设我们在1年前用C++制作了一个程序,它一直在连续工作,没有任何停止!在1年前,我们不知道有一天我们应该更新它(由于修复了一些错误)。所以我们没有实现任何DSU(动态软件更新)说明。它也不在让我也可以访问它的内存或上下文的虚拟机中运行。现在如何在不停止的情况下对其进行更新(添加或删除一些函数、数据类型或指令)。有什么建议吗?谢谢。 最佳答案 您必须为其附加一个调试器。在不会破坏任何东西的执行点停止它,替换可执行镜像,重新对齐指令指针,如果您选择了错误的中断点,您还必须重新对齐堆栈并修改可能受到影响/添加的变量新的代码。这比您想拥有
我有一个项目需要访问嵌入到specialsection中可执行文件中的ELF文件.我以前手工制作Makefile,只是有一个shell脚本,我在其中使用objcopy将我想要嵌入的目标复制到一个.o文件中,然后在可执行文件中链接到该文件。#Createanewsectionandcopythebinarythere($1=input$2=outputname)objcopy--input-targetbinary--output-targetelf64-x86-64\--binary-architecturei386$1$2.o现在我想摆脱自定义Makefile并使用CMake生成它们
我为ARM嵌入式设备(运行DD-WRT的AsusRT-AC68U路由器)交叉编译了一个小的HelloWorld程序:#arm-linux-gnueabi-g++hello.cpp-mcpu=cortex-a9-s-ohello文件看起来不错:#filehellohello:ELF32-bitLSBexecutable,ARM,EABI5version1(SYSV),dynamicallylinked(usessharedlibs),forGNU/Linux2.6.32,BuildID[sha1]=5099693c31154cdd7f04c16ced5b80b1e35e625b,stri
我在静态库中的多个项目之间共享了一些代码。即使使用函数级链接,我在输出中得到的目标代码也比我想要的多-seeanotherquestionaboutthat.当然,减少链接到最终可执行文件的目标代码数量的最直接解决方案是拆分翻译单元,这样我就可以得到更多的.obj文件,每个文件的目标代码都更少。我什至可以走极端-将每个函数放入一个单独的翻译单元。假设我不关心由十倍以上的.cpp文件引起的困惑,也不关心可能的链接时间增长。这样拆分成许多目标文件是否会增加可执行文件大小的开销?可执行文件是否会因为链接到其中的.obj文件多十倍(但总体上它们具有完全相同的函数和变量)而变得更大?
假设我正在分发二进制库。它有两个版本,调试版和发布版。调试和发布彼此不兼容,所以如果例如用户构建一个发布可执行文件,他/她必须链接到发布库。如果库版本和可执行版本之间存在不匹配,目前会出现很难发现的细微错误。相反,我想显示一个非常清楚的错误消息,通知存在不匹配,最好是在链接时。实现此目标的好方法是什么? 最佳答案 我将假设您使用的是静态库,而二进制文件是指将在编译时链接的.lib(与运行时可能不匹配的dll等相反)。在我看来,最简单的方法是在您的.h文件中使用这种结构#ifdef_RELEASE//orwhateveryourcom
我有一个关于使用校验和使用visualstudio编译的可执行文件验证的问题:如果我从src构建一个项目,我最终会得到一个可执行文件,称为exec1.exe,其中包含一些元数据。如果我稍后重建完全相同的src,我会得到另一个可执行文件,比如exec2.exe,它也有自己的元数据部分。如果我为这两个文件中的每一个创建一个校验和,它们就会不同,因为这两个文件之间的元数据信息是不同的。有谁知道在我对文件进行校验和时绕过元数据的方法,这样无论元数据如何,对两个文件进行校验和都会产生相同的校验和值?或者如何编译二进制文件,这样只要src相同,我就可以得到相同的可执行文件?预先感谢您的输入,问候
请考虑以下代码和平://1.Singleheaderfile.Imaginethatitissomestaticlibrary.//Counter.h#pragmaoncestructCounter{Counter(){++getCount();}staticint&getCount(){staticintcounter=0;returncounter;}};//2.Sharedlibrary(!)://main_DLL.cpp#include#include"counter.h"extern"C"{__declspec(dllexport)//forWINvoidmain_DLL()