如何找到堆栈深度?

2023-12-19

我想用单元格替换以下函数调用(参考:从 C 中的任何线程获取调用堆栈 https://stackoverflow.com/questions/1310669/get-call-stack-from-any-thread-within-c )

int calla()
{
   printf("Inside calla\n");
   printf("A1=%x\n",__builtin_return_address (0));
   printf("A2=%x\n",__builtin_return_address (1) );
   printf("A3=%x\n",__builtin_return_address (2) );
}


int callb()
{
   int i,j;
   j = stackdepth(); 
   for (i=0 ; i<j ;i++) 
   printf("%x\n",__builtin_return_address (i));
}

如何找到堆栈深度?


这仅适用于gcc,以及在某些平台上。我可以在这里重新输入所有文档,但很容易获得:这是 gcc 手册的第 6.48 节(info gcc)如果您至少有版本 4.7.2,并且它在线here http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Return-Address.html.

请注意“级别参数必须是常量整数”这句话。这将使循环变得棘手。

您无法可靠地获取堆栈高度__builtin_return_address,但根据文档__builtin_frame_address当你到达堆栈顶部时将返回 0。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何找到堆栈深度? 的相关文章

随机推荐

  • 我可以在 ruby​​ 中定义 Java 子类,然后在 Java 中实例化它吗?

    我想在 Java 中定义一个超类 然后在 Ruby 中定义一个子类 然后在 Java 中创建该子类的实例 有点像这样 Java superclass package myPkg public class Sup public Sup pub
  • Laravel“Hash::make”替代 url 参数?

    如何在 Laravel 中对 url 参数进行哈希处理 我知道 Hash make 方法 但这是一种密码方法 这些哈希值对 url 不太友好 Laravel 是否有更好的替代方案 这样我就可以对参数进行哈希处理 例如http url key
  • 判断驱动器是分区还是单独的 HDD

    我正在编写自己的文件搜索 为什么是因为我想 可以 不寻找现有的程序 我可以使用 C 获取所有驱动器DriveInfo GetDrives http msdn microsoft com en us library system io dri
  • 如果二进制文件包含字符串类的成员,为什么 C++ 拒绝将结构追加到二进制文件中?

    所以今天我在编程上几乎没有取得任何进展 因为我非常缓慢地意识到 C 是一种类型大小写非常敏感的语言 因为如果结构的成员之一是字符串类类型 我就无法将结构附加到二进制文件 在我发现之前我并不知道情况是这样 我先证明我的观点 此代码将不起作用
  • 成为万事通程序员的好处和优势? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我从事 Web 开发已有 10 年了 主要是 MS 堆栈 但也有一些 LAMP 如今 程序员的选择如此之多 而且就业市场似乎无处不在 在我再次深
  • 从 .xls 文件中读取图像及其位置的参考

    在我的一个项目中 我需要从 xls文件 对于每一行 有一列包含我需要读出的图像 看起来我可以一起读取所有图像 但是我怎样才能获得每个图像的位置 例如列号和行号 以便我可以将这些图像与其他数据关联起来 只要形状是图片 以下都是可能的 impo
  • 从异步 NSURLConnection 更新 NSmenu

    我正在编写一个小系统托盘应用程序 它从 API 获取数据并相应地更新其菜单 但在打开菜单时更新菜单时遇到问题 我什至不知道从哪里开始 所以让我们从头开始吧 我有一个习惯PNLinksLoader其职责是获取数据并解析它的类 void loa
  • 无法将 System.IO.Compression 添加到 SQL Server 中的受信任程序集

    我正在尝试在 NET 4 5 中创建一个 SQLCLR 存储过程来处理 ZIP 文件 明显地System IO Compression不在 SQL Server 的批准列表中 但这是我尝试通过 SQL Server Management S
  • 如何在iPhone SDK中检测PDF文档的方向

    我目前正在使用 CGPDFDocumnentRef 开发一个简单的 PDF 阅读器 当我尝试渲染纵向 PDF 文档时一切都很好 但是当我尝试在横向中渲染一个时 它会显示一个旋转的 PDF 文档 当然 当我在 pdf 阅读器的网络浏览器中查看
  • 如果最后评估的语句是 If 语句,Ruby 中会返回什么

    我的理解是 ruby 返回函数中计算的最后一个语句 如果函数以一个结尾怎么办if评估结果为 false 的语句 def thing input item input hi if item end end puts thing hi clas
  • Spring 5 Reactive - WebExceptionHandler 没有被调用

    我已经尝试了中建议的所有 3 个解决方案处理 spring webflux 中的错误的正确方法是什么 https stackoverflow com questions 43575538 what is the right way to h
  • 为什么python客户端收不到SSE事件?

    我有一个 python 客户端 使用 node js API 从服务器监听 SSE 事件 流程是我通过以下方式向 node js API 发送了一个事件call notification py并运行seevents py在循环中使用run
  • Numpy 矩阵乘法广播

    我有一个由 N 个 3x3 数组 矩阵的集合 尽管数据类型为 np ndarray 组成的数组 还有一个由 N 个 3x1 数组 向量的集合 组成的数组 我想要做的是将每个矩阵乘以每个向量 所以我期望得到 N 个 3x1 数组 简单的例子
  • 在我的案例中,如何将一种布局嵌入另一种布局?

    如果我有一个名为底部 xml 底部 xml 请参阅此文档重用布局 http android developers blogspot com 2009 02 android layout tricks 2 reusing layouts ht
  • MVC 4 razor 数据注释只读

    ReadOnly 属性似乎不在 MVC 4 中 Editable false 属性不能按我希望的方式工作 有类似的东西有效吗 如果不是 那么我如何制作自己的 ReadOnly 属性 其工作方式如下 public class aModel R
  • 当前位置更改时 MKRoute 更新 MKPolyline Overlay

    我用谷歌搜索了很多 但无法让它发挥作用 在我的 MKMapView 中 我有一个自定义 MKAnnotationView 我可以将其放置在任何地方 还有代表我当前位置的点 我可以 显示方向 计算自定义注释和当前位置之间的 MKDirecti
  • 将 unique_ptr 与 gsl_vector 结合使用

    我最喜欢的方面之一unique ptr是它提供的自动内存管理 我想用unique ptr与 GSL 向量之类的东西 然而 gsl vector有自己的释放内存的机制 gsl vector free 有没有办法强制唯一指针使用GSL的向量释放
  • 为什么 iostream 在 MCU 上占用如此多的闪存空间?

    我使用 GCC 5 2 0 编译 EFM32 MCU 基于 Cortex M 内核 的代码 当我想要时 我注意到代码大小急剧增加 include
  • iOS UrlSession.shared.dataTask 删除 utf-8“+”字符并替换为“”

    我正在使用 x www form endoded 数据创建对 API 的登录调用 我在 Postman 中创建了一个 POST 并收到了 200 回复 我使用Postman的导出功能生成Android的OKHTTP代码和iOS的NSURL代
  • 如何找到堆栈深度?

    我想用单元格替换以下函数调用 参考 从 C 中的任何线程获取调用堆栈 https stackoverflow com questions 1310669 get call stack from any thread within c int