草庐IT

c++ - 无法使用 GDB 进入共享库中的函数

我正在尝试调试一个使用GDB从许多共享库构建的应用程序。gdb的开始:prompt$gdbGNUgdb(GDB)RedHatEnterpriseLinux(7.2-50.el6)Copyright(C)2010FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisisfreesoftware:youarefreetochangeandredistributeit.ThereisNOWARRANTY,totheextentpermittedbylaw.Type"showcopying"and"showwarra

c++ - OpenMAX 和 NDK : Where I can get the surface?

我正在编写一个显示视频的应用程序。该应用程序是使用AndroidNDK和JNI编写的。我想使用OpenMAX。在OpenMAX示例中,它从Java检索表面,但我可以从哪里获得要渲染的表面?我只能通过applicationContext获得nativeWindow。例子:voidJava_com_example_nativemedia_NativeMedia_setSurface(JNIEnv*env,jclassclazz,jobjectsurface){theNativeWindow=ANativeWindow_fromSurface(env,surface);}但我没有表面。谢谢

Android NDK打包armeabi平台架包

NDK打包armeabi1.降低NDK版本和Cmake版本sdk.dir=E\:\\Android\\sdk//指定ndk版本,不指定默认使用最新的NDKndk.dir=E\:\\Android\\sdk\\ndk\\16.1.4479499修改builde.gradle(app)android{ defaultConfig{ ... //配置AS工程的C/C++源文件编译参数 externalNativeBuild{cmake{cppFlags''}}ndk{ //打包生成的so平台abiFilters'armeabi'} } ... externalNativeBuild{cmake

c++ - 单步执行 std::function 调用时如何跳过 std 命名空间中的方法调用? (使用 GDB。)

如果我需要通过std::function调用,使用调试器单步执行函数对象可能会非常困惑。是否可以通过某种方式跳过这些帧? 最佳答案 gdb7.4为此添加了skip系列命令。(gdb)aproposskipinfoskip--Displaythestatusofskipssetstep-mode--Setmodeofthestepoperationshowstep-mode--Showmodeofthestepoperationskip--Ignoreafunctionwhilesteppingskipdelete--Deletesk

c++ - 为什么 gdb 在 !=/== 和 &&/|| 时不能计算函数组合在一个表达式中?

这可能是我在描述我的问题时遇到的困难是我找不到其他人的原因。我使用的是gdb7.4-2012.04。至少看起来任何包含!=/==和&&/||的表达式forvectors或vectoriterators将无法在gdb中评估并出现以下错误:无法访问地址为0x0的内存这是一个测试用例,后面是我的编译行和测试:#include#include#include#includeusingnamespacestd;typedefcharGUID[32];intmain(intargc,char**argv){vectorvec;for(inti=0;i::iteratorvecIter=vec.be

c++ - 如何深入研究 shared_ptr [Netbeans、clang++、gdb]

我正在使用NetbeansC++8.0.2clang++(Ubuntuclang版本3.6.0-2ubuntu1(tags/RELEASE_360/final)(基于LLVM3.6.0))gdb(GNUgdb(Ubuntu7.9-1ubuntu1)7.9)在我的“C++简单测试”中,每当我检查一个shared_ptr变量时,我看到的所有值都是:std::shared_ptr(count1,weak0)0x64d3a0或类似的。无法深入了解它实际指向的值。即使变量窗口中的TreeView显示了其中一个扩展器图标,当我单击它时它也会消失。当我尝试取消引用它或在“表达式”窗口中调用它的get

c++ - GDB 显示无堆栈

我正在尝试运行一个测试程序以查看gdb(回溯)如何显示调用堆栈。我有以下程序#include#includevoidfun2(){assert(0);}voidfun1(){fun2();}intmain(){fun1();return0;}然后我做了以下事情:g++-gdump.cpp-oout./outout:dump.cpp:16:voidfun2():Assertion`0'failed.Abort(coredumped)gdboutcore.28149(gdb)btNostack.//Whydoesitshownostackhere我原以为它会将调用堆栈显示为:fun2fun

c++ - 在 gdb 中使用核心转储时,我如何确切知道哪个线程导致了 SIGSEGV?

这个问题在这里已经有了答案:HowtofindwhichthreadcausedSEGFAULTinapost-mortemgdbsession?(1个回答)关闭7年前。我的应用程序使用了8个以上的线程。当我在gdb中运行infothreads时,我看到线程和它们正在执行的最后一个函数。对我来说,究竟是哪个线程导致了SIGSEGV似乎并不明显。有可能告诉它吗?是线程1吗?线程是如何编号的?

c++ - GDB:警告:在重载方法上设置了多个断点

anisha@linux-dopx:~>g++-Wall-pedanticbreakpoints.cpp-ganisha@linux-dopx:~>gdba.out(gdb)bX::XBreakpoint1at0x400ac1:filebreakpoints.cpp,line14.Breakpoint2at0x400aa0:filebreakpoints.cpp,line9.warning:Multiplebreakpointswereset.Usethe"delete"commandtodeleteunwantedbreakpoints.(gdb)设置断点的方法是什么在默认构造函数上

c++ - 如何使用 gdb 查看 C++ 类在内存中的布局?

我有一个程序的调试版本(V8JavaScriptVM),我想了解某些类的实例是如何在内存中布局的。我可以像这样漂亮地打印结构:(gdb)printthread_local$6={blocks_={data_=0x868ceb0,capacity_=7,length_=1},entered_contexts_={data_=0x868d828,capacity_=1,length_=1},saved_contexts_={data_=0x868d838,capacity_=1,length_=1},spare_=0x0,ignore_out_of_memory_=false,call_d