首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何打印gdb/lldb调试中模板成员函数返回值

在gdb/lldb调试中打印模板成员函数返回值的方法如下:

  1. 首先,在编译代码时确保启用了符号调试信息。可以通过添加编译选项 -g 或者使用 CMake 中的 CMAKE_BUILD_TYPE=Debug 来实现。
  2. 启动调试器,输入 gdb <可执行文件> 或者 lldb <可执行文件> 命令。
  3. 在调试器中,设置断点以停在你想要调试的模板成员函数的位置。可以使用 break <函数名> 命令或者在函数的定义行之前设置断点。
  4. 运行程序,可以使用 run 或者 r 命令。
  5. 当程序停在断点处时,输入 p <表达式> 命令来打印模板成员函数的返回值。表达式应该是一个完整的函数调用,包括参数。
  6. 例如,如果有一个名为 myTemplateFunction 的模板成员函数,接受一个整数参数,并返回一个字符串,你可以输入 p myInstance.myTemplateFunction(42) 命令来打印返回值。

注意事项:

  • 在打印模板成员函数的返回值之前,确保已经实例化了模板,并且函数已经被调用过。否则,调试器可能无法正确识别类型和返回值。
  • 如果返回值是一个复杂类型,可能需要对其进行进一步解析和打印,例如通过访问其成员变量或调用其方法。
  • 如果模板成员函数在编译期间由于某些原因没有被实例化,可能无法正确打印返回值。在这种情况下,可以尝试通过调用其他已经实例化的模板函数来间接获取返回值。

这是关于如何打印gdb/lldb调试中模板成员函数返回值的基本方法。然而,具体的调试过程可能因为不同的编译器、调试器版本、操作系统等而有所差异。所以,在实际使用中可能需要根据具体情况进行适当调整和尝试。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Swift进阶-LLDB调试

任何返回值LLDB的默认格式。 frame 命令选择和检查当前线程的堆栈帧,GDB远程通过远程GDB服务器连接到进程,如果没有主机指定localhost假设 gui 切换到基于诅咒的GUI模式。...target 在调试器对象上操作的命令 thread 的一个或多个线程操作的命令目前的过程 type 在类型系统上操作的命令 version 显示LLDB调试器版本 watchpoint 操作上观察点的命令...显示任何返回值LLDB的默认格式 parray 评估当前线程上的表达式。显示任何返回值LLDB的默认格式 po 评估当前线程上的表达式。...显示任何返回值LLDB的默认格式 q 退出LLDB调试器 r 在调试启动可执行文件 rbreak 在可执行文件设置断点或断点集。 repl 评估当前线程上的表达式。...显示任何返回值LLDB的默认格式 run 在调试启动可执行文件 s 源级单步,单步调用。

84430

iOS开发 Xcode的各种调试、DEBUG

BUG,简单来说就是程序运行结果与预期的不同,下面来说说Xcode的DEBUG方法 参考博文 断点调试 普通断点 全局断点 条件断点 1.普通断点 看图 当程序运行到断点处时会停下,然后进行单步调试...所以我们这么做: 编辑断点 添加条件Condition 还可以Action在条件断点触发时执行事件 如:输出信息 4.方法断点 打印调试 尽管ARC已经让内存管理变得简单、省时和高效,但是在object...(这里有一个关于调试如何工作的总体的解释。) 你以前有可能已经使用过调试器,即使只是在 Xcode 的界面上加一些断点。但是通过一些小的技巧,你就可以做一些非常酷的事情。...GDB to LLDB 参考是一个非常好的调试器可用命令的总览。你也可以安装 Chisel,它是一个开源的 LLDB 插件合辑,这会使调试变得更加有趣。...这意味这函数剩余的部分不会被执行。这会给 ARC 的引用计数造成一些问题,或者会使函数内的清理部分失效。但是在函数的开头执行这个命令,是个非常好的隔离这个函数,伪造返回值的方式 。

2.2K50
  • Android基础开发实践:如何分析Native Crash

    如何分析Native Crash?...以上这些寄存器对于我们分析函数参数传递等具有重要的意义。 如果发现由于使用了Bugly等插件导致无法正常打印出这些信息,那么建议关闭这些插件再复现问题。...在Android上使用gdb编译不是一件轻松的事情,但是也并不复杂。Android SDK实际上已经包含了一套gdb调试工具,我们直接拿来使用即可。...其中gdbserver是用在target(手机)附加到进程进行调试的服务,而gdb则是host上用于调试的界面,或者叫做client,另外你还可以给gdb加上一个图形界面。...完整的调试架构大致如下: ? 下面我们看看如何gdb连接上的native代码。步骤分为以下4部分: 1.

    17.6K153

    Xcode Debug 大全

    (这里有一个关于调试如何工作的总体的解释。) 你以前有可能已经使用过调试器,即使只是在 Xcode 的界面上加一些断点。但是通过一些小的技巧,你就可以做一些非常酷的事情。...GDB to LLDB 参考是一个非常好的调试器可用命令的总览。你也可以安装 Chisel,它是一个开源的 LLDB 插件合辑,这会使调试变得更加有趣。...(lldb) p/t (char)16 0b00010000 你也可以使用 p/c 打印字符,或者 p/s 打印以空终止的字符串 p/d打印ACRSII(译者注:以 ‘\0’ 结尾的字符串)。...在 LLDB ,你可以使用 process continue 命令来达到同样的效果,它的别名为 continue,或者也可以缩写为 c。...这意味这函数剩余的部分不会被执行。这会给 ARC 的引用计数造成一些问题,或者会使函数内的清理部分失效。但是在函数的开头执行这个命令,是个非常好的隔离这个函数,伪造返回值的方式 。

    1.2K21

    从微信扔骰子看iOS应用安全与逆向分析

    前言 在之前《免越狱调试与分析黑盒iOS应用》以及前几篇文章已经介绍了如何开始分析iOS应用,不过都是基于非越狱的机器,其本意是为了能够在自己的主力设备中进行简单的分析和调试。...TEXT 段的偏移,可以在 IDA 中直接跳转到对应函数(返回值),整理对应的调用函数分别是: -[BaseMsgContentViewController SendEmoticonMesssageToolView...,否则会导致校验失败,或者直接修改 random 函数返回值也是可以的。...LLDB LLDB是个功能十分强大的调试器,在有些场景下比GDB还要好用。...关于GDB命令可以参考GDB调试笔记,而GDB命令对应的LLDB命令可以参考GDB and LLDB Command Examples,这里只介绍一些常用的例子: 在一个ObjectiveC类的所有方法下设置断点

    1.9K40

    Go 语言基础入门教程 —— 单元测试、问题定位与代码调试

    问题定位与调试 打印变量 当然,对于一些简单的测试,还可以通过打印变量的方式来定位问题,通常我们在 PHP 中就是这么做的,比如通过 var_dump、printf、echo 之类的语句或函数打印返回的结果...,在 Laravel 框架还可以通过 dd 或 dump 方法进行简单高效的变量打印调试,在 Go 语言中,对应的方式是前面介绍过的 Printf 或 Println 方法,用于对变量进行格式化输出(...类比 PHP 的 printf 函数和 print 函数,PHP 没有提供类似 Println 这样的方法,但是你可以通过在打印字符串结尾加上 \n 来实现换行),这两个方法都位于 fmt 格式化包...GDB 调试 GDB 是一个由 GNU 开源组织发布的、Unix/Linux 操作系统下的、基于命令行的、功能强大的程序调试工具,Go 语言编译后的二进制文件支持通过 GDB 进行调试,比如上篇教程通过...允许 gdb 控制其它进程最好的方法就是用系统信任的证书对它进行签名,对应的解决方法参考这里:https://opensource.apple.com/source/lldb/lldb-69/docs/

    89130

    Go 快速入门篇(三):单元测试、问题定位及代码调试

    二、问题定位与代码调试 打印变量 当然,对于一些简单的测试,还可以通过打印变量的方式来定位问题,通常我们在 PHP 中就是这么做的,比如通过 var_dump、printf、echo 之类的语句或函数打印返回的结果...,在 Laravel 框架还可以通过 dd 或 dump 方法进行简单高效的变量打印调试,在 Go 语言中,对应的打印函数是前面介绍过的 Printf 或 Println 方法,用于对变量进行格式化输出...(类比 PHP 的 printf 函数和 print 函数,PHP 没有提供类似 Println 这样的方法,但是你可以通过在打印字符串结尾加上 \n 来实现换行),这两个方法都位于 fmt 格式化包...IDEA 差不多: GDB 调试 日常开发使用 GoLand 自带的代码调试功能就够了,如果你想要通过更加 Hacker 的方式调试代码,可以选择 GDB。...允许 gdb 控制其它进程最好的方法就是用系统信任的证书对它进行签名,对应的解决方法参考这里:https://opensource.apple.com/source/lldb/lldb-69/docs/

    69130

    lldb 入坑指北(1) - 给Xcode批量添加启用&禁用断点功能

    API 架构 通过 lldb 相关 API,构建自己的效率工具(Python 脚本) 入门 LLDB LLDB 是一个开源调试器,它已经被内置在 Xcode 程序。...Chisel Chisel 是一个 Python 脚本集合,建议读者先阅读 与调试器共舞 - LLDB 的华尔兹 后再看下面的部分 进阶 再看 LLDB LLDB调试接口本质上是一个 C++ 共享库...LLDB 本身支持用户自定义命令,比如通过脚本可以自定义一个pviews 命令,该命令可以打印 APP 所有的视图。 该命令已经在 Chisel 实现。...这个函数是我们自定义命令的核心,它通过调用 Python 模块 subprocess 的 getstatusoutput 方法,获取ls 命令的输出结果,并打印到结果。.../lldb-gdb.html [5] LLDB Python Reference: http://lldb.llvm.org/python-reference.html

    1.1K10

    使用 LLDB 调试 Go 程序

    请确保开启参数 -gcflags "-N -l" -不能改变变量的值,或者调用goh函数 -需要更好的支持 chan 和 map 类型 -调试信息不包含输入的package, 所以你在表达式需要package...如果有同名的本地变量,比如shadowed 变量, 你不知道哪个是哪个 -调试信息仅仅描述了变量在内存的位置,所以你可能看到寄存器的变量的stale数据 -不能打印函数类型 教程 在这个例子我们可以检查标准库正则表达式...set to 'regexp.test' (x86_64). 4 (lldb) 2、设置断点 在TestFind 函数上设置断点: 1 (lldb) b regexp.TestFind 有时候 go编译器会使用全路径为函数名添加前缀...命令frame variable会列出这个函数所有的本地变量以及它们的值。但是使用它有点危险,因为它会尝试打印出未初始化的变量。未初始化的slice可能会导致lldb打印出巨大的数组。...函数参数: 1 (lldb) frame var -l 2 (*testing.T) t = 0x000000020834a000 打印这个参数的时候,你会注意到它是一个指向Regexp的指针。

    2.1K30

    扒虫篇-Debug几个实用的方法

    ---- 一.打印 相信在调试程序时,打印有时候一定是少不了的,当然你也可以用LLDB命令完全代替,但是打印技巧依然是比较实用的一种调试技巧。...在某个方法执行断点 设置步骤如下: ? 如果你的Symbol只写了一个函数名,那么就会在出现该函数名的地方就中断执行。如下,就会在运行到doAnimation的时候中断。是不是很强大呢? ?...三.LLDB命令 LLDB的Xcode默认的调试器, 我们通过执行LLDB命令使调试过程更加的灵活。并且可以通过指令立刻看到一些我们需要修改完代码再次运行才能看到的效果或者结果,超级实用。...Xcode内嵌LLDB调试窗口。在程序执行到断点后你可以输入LLDB命令操作调试过程。 ?...因此一般只在不需要显示输出,或是方法无返回值时使用call。

    1.5K10

    Linux编译C++

    我在这里选择3,在此之前请安装python3 3)开始安装插件 4)此时vimplus就安装成功了 安装Debug GDBLLDB的关系 调试器描述 GDBUNIX及UNIX-like...或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能。...安装GDB调试器 yum install gdb (CentOS) gdb -v 查看gdb是否安装成功 安装LLDB调试器(暂时不写) 大多数电脑还是用GDB作为调试器的,一般只有MAC使用且内置.../out执行程序 设置断点 设置断点之前我们进入gdb调试 gdb out 开始Debug b main 在main函数设置断点(此时程序会停在初始化的第一条语句) run 执行程序 查看栈...frame 可以查看程序在哪一个函数 此时执行frame可以看到程序进入了change() ​ 我们继续执行代码,此时跳出函数后执行frame后,返回main函数 ​ 我尝试画了一张图应该是这样

    22.8K50

    GDB的那些奇淫技巧

    目标漏洞程序是一个 CGI 程序,由主进程调起,而且运行只有一瞬的时间;我的需求是想要在在该程序中下断点,在内存布局之后可以调试我的 shellcode,该如何实现?...在 lldb 中有--wait-for,gdb 里却没有对应的命令,经过多次摸索,终于总结出一个比较完美的解决方案。 示例程序 这里构建一个简单的示例来进行实际演示。...我们的调试目标是断点在子进程的strcpy,拓展来说是希望能断点在子进程的任意地址上。...这是一个 gdb 命令,其目的是告诉 gdb 在目标应用调用fork之后接着调试子进程而不是父进程,因为在 Linux fork系统调用成功会返回两次,一次在父进程,一次在子进程。...另外一个回答说了,虽然不能断在指定地址,但我们可以break main,告诉 gdb 把断点设置在 main 函数。不过我们的子进程是没有符号的,所以break main并没有卵用。

    1.2K20

    如何调试Android Native Framework

    半年前写了一篇文章,介绍 如何调试Android Framework,但是只提到了FrameworkJava代码的调试办法,但实际上有很多代码都是用C++实现的;无奈当时并并没有趁手的native调试工具...本文将带来Android Frameworknative代码的调试方法。 在正式介绍如何调试之前,必须先说明一些基本的概念。...设置调试符号以及关联源码 在运行程序之后,我们可以在Android Studio的状态栏看到,LLDB调试插件自动帮我们完成了so查找路径的过程,这一点比gdb方便多了!...因此我们直接使用 LLDB 调试;当然,用gdb也能进行无源码调试,但是使用lldbgdb的步骤要简单得多;不信你可以看下文。...在ARM下,r0~r4存放函数的参数,超过四个的参数放在栈上,具体如何利用这些寄存器的信息需要了解一些ARM汇编知识。

    3.7K20

    iOS代码调试LLDB命令

    前言 在iOS系统的APP程序开发,经常需要代码的调试跟踪,最常用的就是LLDB Debugger程序调试器,LLDB Debugger (LLDB) 是一个开源、底层调试器(low level debugger...对于测试同学来说,学习iOS代码调试LLDB命令,能更好地辅助我们通过各种手段如修改变量返回值创造实际难以模拟的环境进行测试,甚至能协助开发同学定位bug。...在LLDB模式下,根据需要输入相关的LLDB调试命令既可进行代码调试,下面小编将给大家介绍几款常用的LLDB命令。 1.打印 打印是代码调试中最常用的命令,相关的命令有:p和po。...expression命令是动态修改变量的值,Xcode还支持动态调用函数。在控制台执行call命令,可以在不修改代码,不重新编译的情况下,在断点调用某个方法,并输出此方法的返回值。...结束语 本文小编分享了测试工作iOS代码调试之常用的几类LLDB命令,如果需要用到其他的LLDB命令可以随时借助help命令进行查询其用法,当然iOS代码调试除了LLDB命令之外,还可以进行断点调试

    1.7K20

    2019年3月21日 Go生态洞察:在Go 1.12调试你部署的代码

    2019年3月21日 Go生态洞察:在Go 1.12调试你部署的代码 摘要 猫头虎博主在此!今天我们将深入探索Go 1.12的一项关键改进——如何调试优化后的二进制文件。...我们专注于为调试器生成关于变量位置的正确信息,所以如果变量可以被打印出来,它就会被正确打印。...关于macOS支持的说明 Go 1.11开始压缩调试信息以减小二进制文件的大小。这被Delve原生支持,但LLDBGDB在macOS上不支持压缩调试信息。...如果你正在使用LLDBGDB,有两种解决方案:使用-ldflags=-compressdwarf=false构建二进制文件,或使用splitdwarf(go get golang.org/x/tools...关键点 说明 使用Delve调试 调试优化代码,支持检查变量 改进的值检查 更准确地检查优化后的变量值 改进的单步执行 更顺畅的调试体验,更准确的断点 函数调用支持 支持在Delve调用函数 macOS

    9710
    领券