在linux平台下的程序写了很多,但是调试感觉不是很熟悉。这几天专门去学习了一把,搞了一下so的调试。首先给出两个源文件,即调用程序和被调用动态库程序的源代码。调用程序源代码:main.cpp
#include <stdio.h>#include <dlfcn.h>#include <link.h>#include <stdlib.h>int main(){ void *dlh=NULL; int (*printmsg)(char *pMsg); int result; printf("load library!/r/n"); dlh=dlopen("./libprint.so",RTLD_LAZY); if(dlh==NULL) { printf("load library fail!"); return -1; } printf("search function!/r/n"); printmsg=(int (*)(char *))dlsym(dlh,"dj_print"); if(printmsg==NULL) { printf("search function fail!"); dlclose(dlh); dlh=NULL; return -2; } printf("call function.../r/n"); result=printmsg("