我有这个简单的 docker 文件:
FROM ubuntu:eoan
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y \
chromium-browser \
chromium-chromedriver
Run Code Online (Sandbox Code Playgroud)
当我尝试构建它时:
...
Preparing to unpack .../00-chromium-browser_77.0.3865.120-0ubuntu1.19.10.1_amd64.deb ...
=> Installing the chromium snap
==> Checking connectivity with the snap store
===> Unable to contact the store, trying every minute for the next 30 minutes
Run Code Online (Sandbox Code Playgroud)
而且它似乎永远不会到达所述快照商店。如果图像基于disco而不是eoan. 它在物理机上运行良好。
我注意到一个有趣的行为与clang(我使用3.6.0),我没有在文档或其他任何地方找到任何关于它的参考.这是一个小例子:
int main(){
int a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我编译它,clang++ -Wall -W -Werror -Wno-error=unused-variable main.cpp我有预期的警告:
main.cpp:2:9: warning: unused variable 'a' [-Wunused-variable]
int a;
1 warning generated.
Run Code Online (Sandbox Code Playgroud)
现在,让我们试试吧 clang++ -Werror -Wno-error=unused-variable -Wall -W main.cpp
main.cpp:2:9: error: unused variable 'a' [-Werror,-Wunused-variable]
int a;
1 error generated.
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?这是预期的吗?对于这一点,gcc编译两行.
我正在使用一个大型的C++项目并使用clang编译它会很痛苦,所以我坚持使用GCC.
我想-fsanitize=leak在之前的工作中使用我已经和clang 一起使用的漂亮旗帜,但它似乎不起作用.
我做了一个非常简单的例子来测试它:
#include <stdlib.h>
void FooBar() {
malloc(7);
}
int main() {
FooBar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
使用clang它按预期工作:
>> clang -fsanitize=leak main.cpp
>> LSAN_OPTIONS=detect_leaks=1 ./a.out
=================================================================
==18052==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 7 byte(s) in 1 object(s) allocated from:
#0 0x41dcbc (~/dev/addresssanitizertest/a.out+0x41dcbc)
#1 0x431ac3 (~/dev/addresssanitizertest/a.out+0x431ac3)
#2 0x431ae3 (~/dev/addresssanitizertest/a.out+0x431ae3)
#3 0x7f8077e71a3f (/lib/x86_64-linux-gnu/libc.so.6+0x20a3f)
SUMMARY: LeakSanitizer: 7 byte(s) leaked in 1 allocation(s).
>>
Run Code Online (Sandbox Code Playgroud)
但是使用gcc似乎没有发现任何东西:
>> gcc -fsanitize=leak main.cpp
>> LSAN_OPTIONS=detect_leaks=1 ./a.out
>>
Run Code Online (Sandbox Code Playgroud)
我错过了一个很好的环境变量吗?有人曾经使用gcc吗?
编辑:这适用于例如:
g++ -fsanitize=address main.cpp …Run Code Online (Sandbox Code Playgroud)