Sun Studio 12:使用 dbx 调试程序

在显式装入的库中设置断点

dbx 会自动检测发生了 dlopen() 还是 dlclose(),然后装入装入对象的符号表。使用 dlopen() 装入共享对象后,即可在其中设置断点,然后像对待程序的任何部分一样进行调试。

如果共享对象是使用 dlclose() 卸下的,dbx 会记住其中设置的断点,并在使用 dlopen() 再次装入该共享对象时替换这些断点,即便应用程序再次运行也是如此。

但如果要在其中设置断点,或导航其函数和源代码,就不必等待使用 dlopen() 装入共享对象。如果知道正被调试的程序将使用 dlopen() 装入的共享对象的名称,可以使用 loadobject -load 命令请求 dbx 预装其符号表:


loadobject -load /usr/java1.1/lib/libjava_g.so

现在便可在此装入对象被 dlopen() 装入前在其中导航模块和函数及设置断点。程序装入装入对象后,dbx 即会自动设置断点。

在动态链接库中设置断点受以下限制: