gpt4 book ai didi

debugging - 是否可以在 solaris 模块化调试器 (mdb) 中设置挂起断点

转载 作者:行者123 更新时间:2023-12-04 05:58:52 27 4
gpt4 key购买 nike

我正在尝试调试 3rd 方共享库中的函数。我很难在函数中设置断点,因为应用程序在加载库后不久就死了。有谁知道在 mdb 中设置挂起断点的方法,以便在加载库后不久设置断点?

穆斯塔法

最佳答案

你所说的挂起断点在mdb中被称为延迟断点。 ;它的使用方式是这样的:

$ mdb /bin/ls
> ::bp libc.so.1`_init
> :r
mdb: stop at libc.so.1`_init
mdb: target stopped at:
libc.so.1`_init:save %sp, -0x60, %sp

IE。只需转动 ::bp指挥周围, <addr>::bp是直接的(并且需要符号/地址存在,已经加载),而 ::bp <object`symbol>被延迟(并在首次加载指定对象时由调试器激活)。使用 object`symbol您甚至可以区分不同库中的同名函数:

> !ldd/bin/ls
libsec.so.1 =>/lib/libsec.so.1
libc.so.1 =>/lib/libc.so.1
libavl.so.1 =>/lib/libavl.so.1
libm.so.2 =>/lib/libm.so.2
>::bp libsec.so.1`_init
>::bp libc.so.1`_init
>::bp libavl.so.1`_init
>::bp libm.so.2`_init
>::bp _init
> :r
mdb:停在 libc.so.1`_init
mdb:目标停止于:
libc.so.1`_init: 保存 %sp, -0x60, %sp
> :c
mdb:停在 libavl.so.1`_init
mdb:目标停止于:
libavl.so.1`_init: 保存 %sp, -0x60, %sp
> :c
mdb:停在 libsec.so.1`_init
mdb:目标停止于:
libsec.so.1`_init: 保存 %sp, -0x60, %sp
> :c
mdb:在 _init 处停止
mdb:目标停止于:
_init: 保存 %sp, -0x60, %sp

享受调试!

关于debugging - 是否可以在 solaris 模块化调试器 (mdb) 中设置挂起断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9178646/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com