我正在尝试使用调试符号编译程序,以便valgrind将为我提供行号.我发现如果我一次编译一个简单的测试程序(使用-g),那么它包含符号.但是,如果我在两次传递中编译(即编译然后链接),那么它不包含调试符号.
这是单通案例的编译命令:
g++ -g file.c -o file
Run Code Online (Sandbox Code Playgroud)
两次通过
g++ -g -c file.c -o file.o
g++ -g file.o -o file
Run Code Online (Sandbox Code Playgroud)
实际程序看起来像这样,包含一个简单的无效写入
int main(){
int* x = new int[10];
x[10]=1;
Run Code Online (Sandbox Code Playgroud)
}
如果我用一次传递编译,那么valgrind给出以下内容(注意结尾处的行号)
==24114== 40 bytes in 1 blocks are definitely lost in loss record 2 of 9
==24114== at 0xB823: malloc (vg_replace_malloc.c:266)
==24114== by 0x5768D: operator new(unsigned long) (in /usr/lib/libstdc++.6.0.9.dylib)
==24114== by 0x576DA: operator new[](unsigned long) (in /usr/lib/libstdc++.6.0.9.dylib)
==24114== by 0x100000F09: main (file.c:3)
Run Code Online (Sandbox Code Playgroud)
而如果我在两遍中编译,我得到这个(没有行号):
==24135== 40 bytes in 1 blocks are definitely …Run Code Online (Sandbox Code Playgroud) 我想使用分布式缓存来允许我的映射器访问数据.主要是,我正在使用该命令
DistributedCache.addCacheFile(new URI("/user/peter/cacheFile/testCache1"), conf);
Run Code Online (Sandbox Code Playgroud)
其中/ user/peter/cacheFile/testCache1是hdfs中存在的文件
然后,我的设置功能如下所示:
public void setup(Context context) throws IOException, InterruptedException{
Configuration conf = context.getConfiguration();
Path[] localFiles = DistributedCache.getLocalCacheFiles(conf);
//etc
}
Run Code Online (Sandbox Code Playgroud)
但是,此localFiles数组始终为null.
我最初在单主机群集上运行以进行测试,但我读到这将阻止分布式缓存工作.我尝试使用伪分布式,但这也不起作用
我正在使用hadoop 1.0.3
谢谢彼得
我正在一个系统上进行性能测试,我需要确保从磁盘读取数据,并且它不仅仅是缓存(比如早期的测试).我在这里读到我可以使用命令删除缓存
echo 3 | sudo tee /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
但请注意,即使我的帐户是管理员帐户(登录彼得),它仍然需要我的密码.我希望能够在批处理脚本中运行它而无需输入密码(因为这显然是手动的)
更多的研究让我得到了sudoers文件.我的计划是将上面的命令放入一个名为dropCache的单行脚本中,并编辑sudoers以便我可以在不输入密码的情况下运行它.所以我添加了这条线
ALL ALL=(ALL)NOPASSWD:/home/peter/dropCache
Run Code Online (Sandbox Code Playgroud)
在我的sudoers文件的末尾(使用visudo).使用我的管理员帐户,如果我运行
sudo -l
Run Code Online (Sandbox Code Playgroud)
我明白了
(ALL) NOPASSWD: /home/peter/dropCache
Run Code Online (Sandbox Code Playgroud)
但是,如果我运行我的dropCache脚本,我仍然会被要求输入密码
./dropCache
[sudo] password for peter:
Run Code Online (Sandbox Code Playgroud)
任何有关这方面的帮助将非常感激.我正在运行Ubuntu 12.04
谢谢彼得
我遇到了一个 svn 存储库的问题,该存储库到目前为止一直运行良好。
我收到错误
svnadmin: Can't set position pointer in file 'repository/db/revs/0/783': Invalid argument
Run Code Online (Sandbox Code Playgroud)
例如当我跑步时
svnadmin verify
Run Code Online (Sandbox Code Playgroud)
其他一般症状包括无法签出、更新、提交等。
非常感谢任何帮助
谢谢!彼得