小编Pet*_*gan的帖子

链接时调试符号丢失了吗?

我正在尝试使用调试符号编译程序,以便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)

debugging macos gcc valgrind

16
推荐指数
2
解决办法
2038
查看次数

访问hadoop分布式缓存中的文件

我想使用分布式缓存来允许我的映射器访问数据.主要是,我正在使用该命令

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

谢谢彼得

hadoop

8
推荐指数
2
解决办法
2万
查看次数

允许非root用户删除缓存

我正在一个系统上进行性能测试,我需要确保从磁盘读取数据,并且它不仅仅是缓存(比如早期的测试).我在这里读到我可以使用命令删除缓存

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

谢谢彼得

linux sudoers clear-cache

6
推荐指数
1
解决办法
3323
查看次数

svn 无法在文件中设置位置指针

我遇到了一个 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)

其他一般症状包括无法签出、更新、提交等。

非常感谢任何帮助

谢谢!彼得

svn svnadmin fsfs

5
推荐指数
1
解决办法
7411
查看次数

标签 统计

clear-cache ×1

debugging ×1

fsfs ×1

gcc ×1

hadoop ×1

linux ×1

macos ×1

sudoers ×1

svn ×1

svnadmin ×1

valgrind ×1