首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.Net内核Linux使用DB2进行本地调试

.Net内核Linux使用DB2进行本地调试
EN

Stack Overflow用户
提问于 2020-11-13 21:28:39
回答 2查看 956关注 0票数 1

使用.Net容器的核心(3.1) Web。

我通过nuget包IBM.Data.DB2.Core-lnx (3.1.0.300)连接Db2。

当我独立于VisualStudio 2019构建和运行我的Dockerfile时,这个VisualStudio连接可以正常工作。

但是,在尝试通过VS (快速模式)进行调试时,我遇到了以下异常:

无法加载共享库'libdb2.so‘或其依赖项之一。为了帮助诊断加载问题,请考虑设置LD_DEBUG环境变量:liblebdb2.so:无法打开共享对象文件:没有这样的文件或目录

我猜想,定位资源的失败是因为快速模式调试与Docker容器的工作方式有关。通过将应用程序输出复制到挂载,我的IBM变量无法找到NuGet剪贴器文件夹。它们通常如下所示:

代码语言:javascript
复制
ENV DB2_CLI_DRIVER_INSTALL_PATH="/app/clidriver" \
    LD_LIBRARY_PATH="/app/clidriver/lib" \
    LIBPATH="/app/clidriver/lib" \
    PATH=$PATH:"/app/clidriver/bin:/app/clidriver/lib:/app/clidriver/adm"

如何更新这些内容以指向已挂载的应用程序内容?假设这就是问题所在..。

*注意,我正在Dockerfile的底部安装libxml2-dev包。

如果有人有在Linux容器中调试Db2连接的成功策略,我很想听听您做了什么。事先非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-14 05:01:10

在调试容器上运行shell使我能够看到已挂载的内容并获得clidriver路径。在Db2环境变量中设置此值解决了问题:

代码语言:javascript
复制
ENV DB2_CLI_DRIVER_INSTALL_PATH="/app/bin/Debug/netcoreapp3.1/clidriver" \
    LD_LIBRARY_PATH="/app/bin/Debug/netcoreapp3.1/clidriver/lib" \
    LIBPATH="/app/bin/Debug/netcoreapp3.1/clidriver/lib" \
    PATH=$PATH:"/app/bin/Debug/netcoreapp3.1/clidriver/bin:/app/bin/Debug/netcoreapp3.1/clidriver/lib:/app/bin/Debug/netcoreapp3.1/clidriver/adm"
票数 0
EN

Stack Overflow用户

发布于 2021-05-10 15:26:49

我几乎有一个星期都在面对这些担忧,很高兴能解决这个问题。

解决方案:

代码语言:javascript
复制
LD_LIBRARY_PATH=<app release folder path>/netcoreapp3.1/clidriver/lib

当您包含LD_LIBRARY_PATH变量时,路径值将与“./root/usr/lib64 64”一起附加到现有值中。

请注意,如果不包括LD_LIBRARY_PATH,吊舱将出错。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64828258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档