小编Goo*_*son的帖子

矮人错误:编译单元标题中的版本错误(为4,应为2)

共享对象是在RedHat Linux上构建的,虽然所有代码都是使用debug编译的,但调试器(gdb)拒绝加载符号并发出错误,如下所示:

...
GNU gdb   Fedora (6.8-37.el5) 
...
This GDB was configured as "x86_64-redhat-linux-gnu"...
Dwarf Error: wrong version in compilation unit header (is 4, should be 2) [in module libgrokf.so]
Run Code Online (Sandbox Code Playgroud)

有了这个错误,我无法在任何函数中触发断点,也看不到正确的堆栈跟踪.我重新编译了整个项目,但没有任何帮助.我知道在过去的某个时间调试该模块没有问题.

是什么导致了这个问题?

gdb dwarf

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

使用cURL登录Stack Overflow

我正在研究一个项目,我想通过cURL登录Stack Overflow.

我使用Google作为我的openID提供商,这意味着我需要首先通过其API登录Google.

这是我到目前为止的代码:

#!/bin/sh
. ./params.sh #the script with $username and $password
curl --silent https://www.google.com/accounts/ClientLogin \
-d Email=$username -d Passwd=$password \
-d accountType=GOOGLE \
-d source=localhost-test-1 \
-d service=lso \
-o tokens
. ./tokens
echo $Auth; #$Auth is correct here - I did not get a BadAuth error.

endpoint="https://www.google.com/accounts/o8/id";

curl http://stackoverflow.com/users/authenticate \
    -d "openid_identifier=$endpoint" \
    -w %{redirect_url}> ./google_url
google_url=$(cat ./google_url);
echo $google_url;
echo;
echo;
echo;
curl -L --silent --header "Authorization: GoogleLogin auth=$Auth" $google_url;
Run Code Online (Sandbox Code Playgroud)

此时我从谷歌那里得到一个页面,告诉我Stack Overflow需要信息,我必须登录.根据这个页面,该--header ... …

shell curl sh

14
推荐指数
1
解决办法
2728
查看次数

在C中是否有任何保证代码在未定义的行为之前?

在下面的代码中保证打印"0 \n"?

#include <stdio.h>
int main(void)
{
    int c = 0;
    printf("%d\n",c);

    printf("%d,%d\n",++c,++c);
}
Run Code Online (Sandbox Code Playgroud)

更一般地说,如果一个程序有未定义的行为,整个程序是不确定的,还是仅从开始出现问题代码的序列点开始?

请注意:我不是在询问编译器对第二个printf的作用.我问的是第一个printf是否有保证会发生.

我知道未定义的行为能够炸毁你的计算机,崩溃你的程序或诸如此类的东西.

c standards

11
推荐指数
2
解决办法
313
查看次数

如何确保我的所有源文件都使用Unix行结尾保留UTF-8?

我正在寻找一些Linux的命令行工具,可以帮助我检测和转换字符集中的文件,如iso-8859-1windows-1252utf-8,从Windows行结尾到Unix行结尾.

我需要这个的原因是我正在通过SFTP在Linux服务器上开展项目,在Windows上使用编辑器(如Sublime Text),这些项目只是不断地搞砸了.现在我猜我的文件大约有一半是utf-8,其余的是iso-8859-1windows-1252,因为看起来Sublime Text只是选择字符集,当我保存它时文件包含哪些符号.尽管我在选项中指定默认行结尾是LF,但行结尾总是Windows行结尾,所以我的文件中有一半有LF,一半是CRLF.

所以我至少需要一个工具来递归扫描我的项目文件夹并提醒我偏离utf-8的文件与LF行结尾,所以我可以在我将更改提交给GIT之前手动修复它.

关于该主题的任何评论和个人经验也将受到欢迎.

谢谢


编辑:我在我使用的地方有一个临时解决方案,treefile输出有关我项目中每个文件的信息,但它有点不可思议.如果我没有包含该-i选项,file那么我的很多文件会得到不同的输出,如 ASCII C++程序文本 HTML文档文本以及英文文本等:

$ tree -f -i -a -I node_modules --noreport -n | xargs file | grep -v directory
./config.json:              ASCII C++ program text
./debugserver.sh:           ASCII text
./.gitignore:               ASCII text, with no line terminators
./lib/config.js:            ASCII text …

unix command-line line-endings character-encoding sublimetext

11
推荐指数
1
解决办法
9480
查看次数

pthread条件变量

我正在实现一个包含任务队列的线程.第一个任务添加到队列后,线程就会开始运行它.

我应该使用pthread条件变量来唤醒线程还是有更合适的机制?

如果我pthread_cond_signal()在其他线程没有被阻止pthread_cond_wait()而是做某事时调用,会发生什么?信号会丢失吗?

pthreads

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

什么是 - >和之间差异的理由.在c/c ++中?

可能重复:
C++:ptr-> hello();/*VERSUS*/(*ptr).hello();
为什么C区分 - >和.?

我知道成员运算符(.)和指针运算符( - >)之间的区别.

为什么C设计人员为此访问创建了不同的运算符?为什么编译器不能自己搞清楚?

如果你总是使用一个.是否存在模糊的情况,无论你是指成员还是指针成员?

编辑:我不是在寻找"(*a).b"语法.我问为什么设计师不允许你用"ab"代替"a-> b"?

c c++ standards

7
推荐指数
2
解决办法
458
查看次数

获取GDB便利变量中保存的值的符号信息

我经常发现在调试程序时使用堆栈是很有用的,并且我会遇到任何正确对齐的,指针大小的值的符号.我已经厌倦了手动执行此操作,因此我尝试编写一个命令来为我完成此操作.问题是"信息符号"似乎不喜欢在通过指针取消引用设置其参数时使用便利变量作为其参数.IE:

(gdb) info symbol 0xb6ca4d28
[Useful Symbol Information]
(gdb) set $pointer = $esp
(gdb) while ( *(int*)$pointer != 0xb6ca4d28)
 >set $pointer += 4
 >end
(gdb) x/x $pointer
0x6ebee064:     0xb6ca4d28
(gdb) set $dereferencePointer = *(int *)$pointer
(gdb) p/x $dereferencePointer
$103 = 0xb6ca4d28
(gdb) info symbol $dereferencePointer
No symbol matches $dereferencePointer.
(gdb) set $dereferencePointer = 0xb6ca4d28
(gdb) p/x $dereferencePointer
$104 = 0xb6ca4d28
(gdb) info symbol $dereferencePointer
[Useful symbol information]
(gdb)
Run Code Online (Sandbox Code Playgroud)

为什么是这样?这是一个错误吗?有没有不同的方法来做到这一点?

谢谢!

吕克

PS:使用vanilla GDB 7.5

从列表更新:

这很可能是一个错误.

c c++ debugging gdb

7
推荐指数
1
解决办法
579
查看次数

包含标准头后,Vim代码完成不起作用

我必须在文本模式debian linux中开发我的项目.我正在使用Vim,我在其上安装了clang_completion插件.我.clang_completion在我的项目的根目录中创建了文件:

-I.
-I/usr/include
-I/usr/include/c++/4.6
Run Code Online (Sandbox Code Playgroud)

当我写下面的程序时,完成工作正常.

//#include <stdio.h>
int main()
{
  struct A
  {
    int x, y;
  };

  A a;
  a. // After putting dot, the suggestion popup appears

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,删除第一行的注释后,它不起作用!我怎样才能克服这个问题?

c++ vim autocomplete

7
推荐指数
1
解决办法
609
查看次数

我可以解读GCC的RTTI名称吗?

使用gcc,当我使用typeid请求对象/变量的类型时,我得到了与我期望在Windows上获得的type_info :: name方法不同的结果.我用Google搜索了一下,发现RTTI名称是特定于实现的.

问题是,我想获得一个类型的名称,因为它将在Windows上返回.是否有捷径可寻?

c++ g++ rtti name-mangling

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

如何从Google Places API获得超过60个结果?

我可以通过下面的Google Places API调用获取邮局结果.

https://maps.googleapis.com/maps/api/place/search/xml?location=35.610418,139.182358&radius=1000000&types=post_office&language=ja&sensor=false&key= "的myKey"

但是,第三页没有"next_page_token"标签,您无法检索以下结果.

如何在第四页之后获得超过60个结果?

google-maps google-maps-api-3 google-places-api

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