【发布时间】:2011-12-28 10:46:47
【问题描述】:
通常在使用 gdb 时,我可以停止执行并重建可执行文件并重新启动,而不会丢失断点。当我使用具有静态链接库的可执行文件尝试此操作时,我收到一条错误消息,指出我无法在构建期间打开可执行文件。
一个具体的例子:
库文件:
libtest.h:
int square(int a);
libtest.c:
int square(int a) {
return a * a;
}
该库是用以下方式编译的:
gcc -g -c libfile.c
ar rcs libtest.a libfile.o
主文件 a.c 包含:
#include <stdio.h>
#include <stdlib.h>
#include "libfile.h"
int main() {
printf( "2 squared is %d\n", square(2) );
return 0;
}
项目是这样编译和链接的:
gcc -g -c a.c
gcc a.o -g --static -L. -ltest -o gdb_test
如果我将生成的文件 gdb_test 加载到 gdb 中,它是否正在运行并不重要。只要 gdb 处于打开状态,后续构建就会在链接步骤中失败:
/usr/bin/ld: cannot open output file gdb_test: Permission denied
有没有办法解决这个问题?我希望能够使用 gdb 而不必重新启动它并丢失我的断点。
【问题讨论】:
标签: c gdb static-libraries