You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在使用LD_PRELOAD加载库时配合Valgrind运行程序?

解决Valgrind与LD_PRELOAD插桩库共存的问题

你遇到的问题本质是Valgrind的执行逻辑导致的:

  • 直接执行valgrind LD_PRELOAD=foo.so ./run_program时,Valgrind会把LD_PRELOAD=foo.so当作要运行的程序,自然找不到这个"文件"
  • 执行LD_PRELOAD=foo.so valgrind ./run_program时,这个环境变量是传给Valgrind进程本身的,而非它启动的目标程序./run_program,所以插桩库不会生效

有两种可靠的解决方法:

方法1:使用Valgrind的--preload选项

这个选项专门用来指定要预加载到目标程序中的库,命令格式如下:

valgrind --preload=foo.so ./run_program

方法2:使用Valgrind的--env选项传递环境变量

通过--env把LD_PRELOAD变量传递给目标进程,命令格式:

valgrind --env=LD_PRELOAD=foo.so ./run_program

如果你的插桩库不在系统默认的库搜索路径里,需要先指定库的绝对路径,或者先设置LD_LIBRARY_PATH(同样用--env传递):

valgrind --env=LD_LIBRARY_PATH=/path/to/your/lib --env=LD_PRELOAD=foo.so ./run_program

内容的提问来源于stack exchange,提问作者mahmood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:18:27