小编Hi-*_*gel的帖子

Win32 API:GetLastError() 和 FormatMessage() 打印垃圾

我只是想用这个简单的代码获取最后一个错误的文本:

#include <cstdio>
#include <string>
#include <windows.h>

int main(){
    char err[256];
    memset(err, 0, 256);
    FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(),
                   MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), err, 255, NULL);
    wprintf(L"%s\n", err); // just for the safe case
    puts(err);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

FormatMessage()尝试可能会写一些类似的东西No error,但我得到:????????? ????°??WINE 中???????  ????°?? ?????°???WinXP下在VirtualBox 中

我检查了我的每一个想法:1)在一个例子中,出于某种原因,使用了 a wchar_t,所以我尝试创建一个wchar_ts缓冲区,并将其转换为FormatMessage (否则构建失败cannot convert ‘wchar_t*’ to ‘LPSTR {aka char*}’ for argument ‘5’,2)然后我想,也许编码与 GNU/Linux 不同,所以我将 WinXP …

c++ winapi wine mingw character-encoding

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

GDB:如何强制在返回函数后不删除监视点?

关于函数局部变量的观察点通常会在函数返回时被删除,并显示消息«Watchpoint 7已删除,因为程序已将块保留在»中.插图:

struct mystruct{
    int a, b, c;
};

void MyFunc(){
    mystruct obj;
    obj.a = 2;
}

int main(){
    MyFunc();
}
Run Code Online (Sandbox Code Playgroud)

gdb会话示例

(gdb) b 7
Breakpoint 1 at 0x4004f1: file /tmp/test2.cpp, line 7.
(gdb) r
Starting program: /tmp/test2 

Breakpoint 1, MyFunc () at /tmp/test2.cpp:7
7               obj.a = 2;
(gdb) wa obj
Hardware watchpoint 2: obj
(gdb) c
Continuing.
Hardware watchpoint 2: obj

Old value = {a = 4195600, b = 0, c = 4195328}
New value = {a = 2, …
Run Code Online (Sandbox Code Playgroud)

debugging gdb watchpoint

4
推荐指数
1
解决办法
3805
查看次数

git 将“审阅者”附加到提交中

显然不是最流行的情况,但我有许多提交,我想在其消息中追加一行Reviewed-by: user<mail>

到目前为止,我只发现这个命令对我来说失败了Invalid line: 10: Reviewed-by: User <mail>

GIT_EDITOR='git interpret-trailers --trailer "Reviewed-by: User <mail>" --in-place' git rebase -i HEAD~8
Run Code Online (Sandbox Code Playgroud)

我也在IRC上问过,没有结果。

欢迎任何其他建议。

git rebase

4
推荐指数
1
解决办法
3100
查看次数

如何将gdb观察点设置为存储在寄存器中的值?

我正在尝试检测某些函数中的堆栈溢出,并希望将观察点设置为RSP寄存器指向的内存.我不能只将一个观察点设置到某个地址,因为可以从不同的地方调用该函数.所以我想在函数的开始和结束时设置断点,并强制它们启用/禁用观察点.

但是设置观察点的方式都不适合我.例如,wa $rsp观看登记册; 该

set $myvar = $rsp
wa $myvar
Run Code Online (Sandbox Code Playgroud)

使观察点跟踪... $ myvar的变化!不是它存储的价值!

很奇怪,我敢肯定,这应该是一种方式,但我不知道一个......

UPD:看起来我在gdb中发现了一个bug.二:

(gdb) wa *$rsp
Attempt to dereference a generic pointer.
(gdb) set $myvar = $rsp
(gdb) wa *$myvar
Attempt to dereference a generic pointer.
Run Code Online (Sandbox Code Playgroud)

UPD:不知道为什么,但wa &*$myvar设置了$ myvar的断点,但不应该.错误?

stack-overflow debugging gdb breakpoints buffer-overflow

3
推荐指数
1
解决办法
1202
查看次数

Emacs:我可以限制缓冲区中的行数

为了通过Emacs和gdb调试应用程序,调试输出的行数有时可能会快速克服9xxxx.有没有办法迫使Emacs在数量超过例如1000之后删除旧线?

lisp debugging emacs elisp

3
推荐指数
1
解决办法
619
查看次数

在没有构造函数的情况下,C++中是否有一种预初始化结构或类的方法?

我的意思是:我有一堆不同的结构/类,所有这些都应该用已知的预先值初始化.除了预初始化之外,这些结构/类永远不会以其他方式使用,因此不需要构造函数 - 它只是浪费额外的内存,程序中的额外CPU周期以及源代码中的额外空间.

c++ constructor struct class

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

'zlib' 的 Uncompress() 返回 Z_DATA_ERROR

我做了一个简单的函数,它需要一个 gzipped 文件,并在某处提取。出于测试目的,我使用了一个通过通用实用程序gzip压缩的文本文件。但出于某种原因,Uncompress ()返回错误Z_DATA_ERROR

我走进调试器直到函数,它肯定会得到正确的数据(整个文件内容,它只有 37 个字节),所以它似乎是两个之一:可怕的 zlib-bug 现在正在窃取你的时间,或者我错过了一些重要的东西,然后我真的很抱歉。

#include <zlib.h>
#include <cstdio>

int UngzipFile(FILE* Dest, FILE* Source){
    #define IN_SIZE 256
    #define OUT_SIZE 2048
    bool EOFReached=false;
    Bytef in[IN_SIZE];
    Bytef out[OUT_SIZE];
    while(!EOFReached){//for no eof
        uLong In_ReadCnt = fread(in,1,IN_SIZE,Source);//read a bytes from a file to input buffer
        if(In_ReadCnt!=IN_SIZE){
            if(!feof(Source) ){
                perror("ERR");
                return 0;
            }
            else    EOFReached=true;
        }
        uLong OutReadCnt = OUT_SIZE;//upon exit 'uncompress' this will have actual uncompressed size
        int err = uncompress(out, &OutReadCnt, in, In_ReadCnt);//uncompress …
Run Code Online (Sandbox Code Playgroud)

c++ gzip zlib

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

Qt:"没有这样的信号"错误

我有一个简单的代码; 这里我有两个按钮,我按下第一个按钮,它显示一个MsgBox.然后我按下"Okay",它应该调用用第二个按钮写的连接动作,但事实并非如此.相反,我得到一个错误:

Object::connect: No such signal QMessageBox::buttonClicked(QMessageBox::Ok)
Object::connect:  (receiver name: 'OpenFile_Bttn')
Run Code Online (Sandbox Code Playgroud)

代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_OpenFile_Bttn_clicked(){
    QFileDialog::getOpenFileName(this,tr("Open file"), "", tr(""));//Open a dialog "OpenFile"
}

void MainWindow::on_pushButton_clicked(){
    QMessageBox msgBox;
    msgBox.setText("Push button to choose a file");
    //Connect clicking button in MsgBox to an action in OpenFile_Bttn button
    QWidget::connect(&msgBox,SIGNAL(buttonClicked(QMessageBox::Ok)),
            ui->OpenFile_Bttn, SLOT(on_OpenFile_Bttn_clicked()));
    msgBox.exec();//Show MsgBox
}
Run Code Online (Sandbox Code Playgroud)

另外我发现了一个有趣的事情,当MsgBox弹出时会出现错误消息,但是当我单击MsgBox中的"Ok"按钮时则不会出现.

c++ qt

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

GetFileAttributes函数

#include "stdafx.h"
#include <Windows.h>
#include <conio.h>

int _tmain(int argc, _TCHAR* argv[])
{
    DWORD d = GetFileAttributes(argv[0]);
    _TCHAR* temp;
    printf("%d\n", d);
    switch(d)
    {
        case 2048: temp = L"Compressed"; break;
        case 32: temp = L"Archive"; break;
        case 16: temp = L"Directory"; break;
        case 16384: temp = L"Encrypted"; break;
        case 2: temp = L"Hidden"; break;
        case 128: temp = L"Normal"; break;
        case 1: temp = L"Readonly"; break;
        case 4: temp = L"System"; break;
        case 256: temp = L"Temporary"; break;
        default: temp = L"Error …
Run Code Online (Sandbox Code Playgroud)

c++ msdn visual-c++

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

gdb:不在上下文中的结构的大小?

有时我需要知道不在范围内的结构的大小(甚至不在堆栈中,即frame相关的命令也无济于事).例如,它发生在调试客户端+服务器通信时,重新启动应用程序只是在结构的上下文中断,目的是找到大小是不舒服和耗时的.

如何struct在忽略当前上下文的情况下找到标题中定义的大小?

c c++ debugging struct gdb

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

如何在GCC中启用反斜杠支持?

我给了一个应该在GNU/Linux下编译的项目.您可能已经猜到了,项目中的所有标题都使用反斜杠符号\.

我知道,反斜杠是未定义的行为,但我需要编译它.我很确定有一种方法可以让GCC使用它,因为MinGW版本可以正常使用反斜杠(我刚检查过这个).

最有趣的是该项目是GNU/Linux的应用程序(用于ARM体系结构),并且ARM GCC可能正常工作.我是唯一一个本地使用GNU/Linux并希望为桌面编译应用程序以便更容易调试的人.

将反斜杠替换为斜杠并迫使同事重新学习使用其他角色不是方法:我只是一个大三学生,但已经在这里工作了4到7年的同事; 他们只是听不到我的声音.那么,我们走吧......

c++ linux compatibility gcc undefined-behavior

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

.cpp:23:错误:无法将'std :: string'转换为'const char*'以将参数'1'转换为'int atoi(con​​st char*)'

这里有一个我试图运行的基本代码但是我遇到stoi问题(这是c ++)我一直收到错误:

‘stoi’ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

我试过atoi和strtol这个错误

.cpp:23: error: cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘int atoi(const char*)’
Run Code Online (Sandbox Code Playgroud)

代码:

using namespace std;

int main(){
    string numberGuessed;
    int intNumberGuessed = 0;
    do {
        cout << "Guess a numeber btw 1 - 10: " << endl;
        getline(cin, numberGuessed);
        intNumberGuessed = atoi(numberGuessed);
        cout << intNumberGuessed << endl;
    } while(intNumberGuessed != 4);
    cout<< "you win" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ string

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