有没有办法在运行时访问调试符号?

2024-01-16

这是一些示例代码,可以让您了解我想要的内容。

int regular_function(void)
{
     int x,y,z;
     /** do some stuff **/
     my_api_call();
     return x;
}
...
void my_api_call(void)
{
    char* caller = get_caller_file();
    int line = get_caller_line();
    printf("I was called from %s:%d\n", caller, line);
}

有没有办法实现get_caller_file() and get_caller_line()?我见过/使用过类似的技巧#defineing my_api_call作为传入的函数调用__FILE__ and __LINE__宏。我想知道是否有一种方法可以在运行时而不是编译时访问该信息(假设它存在)?像 Valgrind 这样的东西难道不需要做这样的事情才能获取它返回的信息吗?


如果您使用调试符号编译了二进制文件,则可以使用特殊库访问它,例如libdwarf http://reality.sgiweb.org/davea/dwarf.html用于 DWARF 调试格式。

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

有没有办法在运行时访问调试符号? 的相关文章

  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 找出当前选择的是哪个 gtk 小部件

    我有一个收藏GtkEntry小部件 其中一些是可编辑和可聚焦的 而另一些则不是 我想找出其中哪些 如果有 当前选择了文本 以便实现 编辑 gt 复制 菜单项 除了迭代所有小部件直到gtk editable get selection bou
  • 删除 iOS Swift 发布版本的 println()

    我想全局忽略所有println 如果我不在调试版本中 则调用我的 Swift 代码 我找不到任何可靠的分步说明 希望得到指导 有没有办法在全球范围内做到这一点 或者我需要包围每个println with IF DEBUG ENDIF声明 最
  • 为什么二进制序列化比 xml 序列化更快?

    为什么二进制序列化比 xml 序列化更快 考虑序列化双精度 例如 二进制序列化 将内存地址中的 8 个字节写入流中 二进制反序列化 读取相同的8个字节 xml 序列化 写入标记 转换为文本 写入结束标记 I O 增加近三倍 CPU 利用率增
  • 使用 localToScene(x,y) 获取节点场景中的位置返回错误值

    我想将弹出的窗格的位置绑定到调用它的按钮的位置 我尝试通过调用来这样做button localToScene button getLayoutX button getLayoutY 然而 返回的 Point2D 变量中的 X 坐标错误 我在
  • 如何在scala中返回一个函数

    How can I return a function side effecting lexical closure https stackoverflow com questions 22288329 side effecting lex
  • 空文本框上的 JQuery 默认文本

    我有一个电子邮件表单文本框 虽然它是空的 但我希望它具有值 电子邮件 当您单击它时 文本就会消失 如果有人点击它但没有输入文本 关于模糊 我希望它恢复为默认文本 我一直在尝试一些事情 但没有任何效果 有人可以指出我正确的方向吗 或者你可以只
  • Linux中如何从另一个终端访问一个终端上运行的进程?

    我想知道该过程 以便我可以从终端访问或控制 Linux 中其他终端上运行的进程 两个终端属于同一系统 也许你想要类似的东西reptyr https github com nelhage reptyr https github com nel
  • GoCQL:将字符串编组到时间戳中

    我正在开发一个带有聚类列的时间序列数据模型 即 CREATE TABLE events id text time timestamp type text val double PRIMARY KEY id time WITH CLUSTER
  • HttpWebRequest 似乎没有发送客户端 SSL 证书

    我正在尝试使用HttpWebRequest查询运行 nginx 的远程服务器 我需要提供客户端证书才能完成连接 我正在执行以下操作 Dim Request As HttpWebRequest DirectCast WebRequest Cr
  • 如何处理 C 和 Python 之间的 IPC?

    我有一个具有两个进程的应用程序 一个在 C 中 一个在 Python 中 C 进程是完成所有繁重工作的地方 而 Python 进程则处理用户界面 C 程序每秒向大型缓冲区写入 4 次 Python 进程读取该数据 至此与Python进程的通
  • 保持片段中所选项目的突出显示?

    我有一个包含两个片段的布局 左侧片段是使用 SimpleCursorAdaptor 的 ListFragment 右侧片段填充了有关从左侧片段列表中选择的项目的详细信息 我试图弄清楚如何确保从 ListFragment 中选择项目stays
  • 如何在Ubuntu上安装phpMyAdmin 4.7.7?

    我需要最新版本 而不是 4 6 6here https launchpad net nijel archive ubuntu phpmyadmin packages 我读了manual https docs phpmyadmin net e
  • 如何使用 Zend_Config_Writer_Ini 保留 application.ini 路径

    我目前正在 Phing 中开发一个构建系统 该系统采用 Zend Framework 项目模板并根据 Phing 参数对其进行配置 我遇到的一个问题是使用 Zend Config Writer Ini 时 我的 Phing 任务从存储库中获
  • ES2015 中的 switch 语句和作用域

    考虑此 ES2015 模块以及在节点 v4 4 5 中运行时的行为 use strict const outer 1 switch foo case bar const heyBar HEY BAR break case baz const
  • Google Sheet 与 If 函数的循环依赖问题

    我正在使用ifGoogle 表格 A 列中的函数 ARRAYFORMULA if isblank D3 D A2 A D3 D 但出现循环依赖错误 如果我使用相同的功能而不使用ARRAYFORMULA i e if isblank D3 A
  • 如何禁用导航栏动画?

    我有两个 UITableViewController 这样当我在第一个 UITableViewController 上单击 下一步 时 第二个 UITableViewController 就会被推送到导航堆栈上并像平常一样对过渡进行动画处理
  • Chrome 加载资源“(从磁盘缓存)”速度缓慢

    My site http www front end io http www front end io配置HTTP请求优先从缓存加载资源 所以我的标题将是这样的 cache control max age 315360000 ETag W
  • 在列表视图中搜索,并在 Android 列表视图中突出显示搜索文本颜色

    我有一个listview with arrayadapter 我需要在我的音乐应用程序中实现这个 帮助我 public class Search Class extends Activity EditText searchedit List
  • TypeScript 编译并保留注释

    我希望在生成的 javascript 文件中保留完整的注释 默认情况下编译器会删除它们 有 tsc 参数吗 用例是保留 参考路径的 进行大胆的单元测试 自 2015 年起您可以创建tsconfig json在你的项目中并添加 removeC
  • 有没有办法在运行时访问调试符号?

    这是一些示例代码 可以让您了解我想要的内容 int regular function void int x y z do some stuff my api call return x void my api call void char