小编Dan*_*B91的帖子

VS Code是否有内存查看器和/或C++扩展的反汇编程序?

我正在使用Visual Studio Code(VS Code)来调试我的C++程序.我想在变量的地址查看内存,也可以查看程序的汇编代码.我正在环顾VS Code,我没有看到这样的观点的选项.我在市场上检查过,我什么都没有.

不确定我是否在寻找合适的位置,但VS Code是否存在这些功能?

谢谢!

c++ debugging visual-studio-code

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

记录执行的java代码的行号

我正在编写PHP Web应用程序的一部分(将用于高中错误查找竞赛),用户必须在给定的Java程序中找到错误.作为其中的一部分,当Java程序执行时,我们想要突出显示代码已执行的Java程序源代码行.为此,我们需要的只是已执行的源代码行号,即代码路径(或称为代码覆盖率?).我们将使用行号突出显示源文件中的行.

我们将使用PHP的shell-exec()来执行Java程序和工具以获取代码路径(无论将是什么).获取代码路径行号的最简单方法是什么?

非常感谢你!

这是描述我们想要的图片

在此输入图像描述

php java code-coverage

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

用C++返回一个对象

我从大多数C和Java的背景学习C++,我很好奇在没有复制对象的情况下,用C++返回对象的最佳方法是什么.根据我的理解,C++ 11引入了右值引用(&&)来从临时变量移动数据(与复制相反).例:

std::string getStr(){
   return "Hello";
}

std::string &&hello = getStr();
Run Code Online (Sandbox Code Playgroud)

我能想到的另一种方法是使用共享指针.

std::tr1::shared_ptr<std::string> getStr(){

    std::tr1::shared_ptr<std::string> hello(new std::string("Hello"));
    return hello;

}

auto hello = getStr();
Run Code Online (Sandbox Code Playgroud)

我想也许一个右值参考更好,但在使用它之前我想先得到第二个意见.哪个更好?

如果不使用构造函数设置它们,还是建议类中的字段是右值引用吗?例:

class StringHolder{

   public:
     std::string &&str;
};

StringHolder sh;
sh.str = getStr();
Run Code Online (Sandbox Code Playgroud)

非常感谢你们!

c++ c++11

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

在ubuntu 12.04上用libc ++铿锵3.1,找不到iostream

我正在尝试使用clang编译一个C++程序,我在这里使用打包版本安装https://launchpad.net/~eudoxos/+archive/llvm-3.1.这是命令:

clang++   -std=c++11 -stdlib=libc++ -g -v -c main.cpp
Run Code Online (Sandbox Code Playgroud)

我得到了这个结果:

ignoring nonexistent directory "/usr/include/c++/v1"
ignoring nonexistent directory "/usr/bin/../lib/clang/3.1/include"
ignoring nonexistent directory ""
ignoring duplicate directory "/usr/include/x86_64-linux-gnu"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/include/clang/3.1/include
/usr/include/x86_64-linux-gnu
/usr/include

main.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
Run Code Online (Sandbox Code Playgroud)

如您所见,它不是在正确的包含目录/usr/include/c++/4.6中搜索.但我认为问题比这更深刻.即使我强制它在该目录中搜索,我得到这个:

In file included from main.cpp:1:
/usr/include/c++/4.6/iostream:38:10: fatal error: 'bits/c++config.h' file not found
#include <bits/c++config.h>
Run Code Online (Sandbox Code Playgroud)

该文件在该区域不存在.我想也许libc ++缺失了,但是在我尝试从源代码编译libc ++之前(我怀疑​​它会起作用)之前我找不到任何专用的libc ++ ubuntu包,我希望你们能帮帮忙.

非常感谢!

ubuntu clang libc++

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

CppUnit在Mac OS X上与Clang链接错误

我正在尝试使用CppUnit编译测试程序.问题是,使用此示例代码:

//[...]

class EntityComponentTest : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE( EntityComponentTest );
CPPUNIT_TEST( testGetComponents );
CPPUNIT_TEST_SUITE_END();
Entity e;


public:
void setUp(){
    e.addComponent("1", new TestComponent("Hello 1"));
    e.addComponent("2", new TestComponent("Hello 2"));
}

void tearDown(){}

void testGetComponents()
{
    TestComponent &first = static_cast<TestComponent&>(e.getComponent("1"));
    TestComponent &second = static_cast<TestComponent&>(e.getComponent("2"));

    CPPUNIT_ASSERT(first.msg == "Hello 1");
    CPPUNIT_ASSERT(second.msg == "Hello 2");

}


};
CPPUNIT_TEST_SUITE_REGISTRATION( EntityComponentTest );
int main(void)
{
//followed from tutorial
CppUnit::TextUi::TestRunner run;
CppUnit::TestFactoryRegistry &r = CppUnit::TestFactoryRegistry::getRegistry();
run.addTest(r.makeTest());

run.run("", false, true);

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

我收到链接错误:

  Undefined symbols for architecture x86_64: …
Run Code Online (Sandbox Code Playgroud)

c++ macos linker cppunit clang

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

将SDL2与wxWidgets 3.0一起使用

我的目标是建立一个Game Boy模拟器.为此,我想将SDL2表面嵌入到wxWidgets窗口中.

我找到了这个教程:http://code.technoplaza.net/wx-sdl/part1/,但是我的程序一运行就崩溃了.但我怀疑这是针对SDL1.2的.该计划的一部分如下所示.

看来如果我调用SDL_Init()并尝试显示一个wxFrame(在本例中是MainWindow),它会显示一秒钟的窗口然后程序崩溃.到目前为止,我在程序中评论了对SDL的所有其他调用,所以看起来问题在于在wxFrame上调用Show()并在同一程序中启动SDL2.

所以问题是:SDL2和wxWidgets 3可以一起工作吗?如果没有,你们可以向我推荐一个Game Boy模拟器的GUI吗?wxWidgets是否有像Qt一样的自己的图形框架(我宁愿避免使用Qt)?

非常感谢!

#include "MainApp.h"
#include "MainWindow.h"

#include <stdexcept>

namespace GBEmu {


static void initSDL() {

    //This and SDL_Quit() are the only calls to the SDL library in my code
    if (SDL_Init(SDL_INIT_EVERYTHING) < 0) {
       throw std::runtime_error("Fatal Error: Could not init SDL");
    }
}


bool MainApp::OnInit()
{
    try {
        //If I comment out this line, the MainWindow wxFrame shows up fine.
        //If I leave both uncommented, the window shows up quickly …
Run Code Online (Sandbox Code Playgroud)

c++ wxwidgets sdl

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

Node-Postgres查询方法未调用其回调函数

我有以下使用node-postgres的代码:

    var client = new pg.Client(conString);
    client.connect(function(err) {
        if(err) {

            throw new Error(console.error('could not connect to postgres '+  err));
        }

    });
    client.query('select * from public.spatial_ref_sys', function(err, result){ 
        console.log('ffdafda');
        throw new Error('kokpokopko');
    });
Run Code Online (Sandbox Code Playgroud)

我认为执行此代码时,“ ffdafda”将被打印到屏幕上,并抛出一条错误消息“ kokpokopko”。我什至在调试器中永不中断地插入了一个断点。由于这些事情永远不会发生,因此我假设从未调用过回调。

我需要某种选项来调用回调吗?我正在阅读文档,但看不到任何东西。

重要的是要注意client.query被调用。我已经通过检查其返回值证明了这一点。

非常感谢你!

javascript asynchronous callback node.js node-postgres

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

我应该通过引用还是值传递一个大数组?

我正在用 Rust 构建一个 Game Boy 模拟器。我创建了一个 readByteFromMemory() 函数,它将一个 8KB 数组作为参数,该数组代表 Game Boy 的 8KB 内部存储器。我在这里考虑两种选择:

fn readByteFromMemory(internalRAM: [u8;0x2000]) -> u8
Run Code Online (Sandbox Code Playgroud)

或者

fn readByteFromMemory(internalRAM: &[u8;0x2000]) -> u8
Run Code Online (Sandbox Code Playgroud)

我能找到的唯一引用这个主题的是这篇文章:http : //words.steveklabnik.com/pointers-in-rust-a-guide其中指出:

But don’t reach for that pointer until you must! Make sure that the 
struct is large enough by performing some tests before you add in the 
complexity of pointers.
Run Code Online (Sandbox Code Playgroud)

我对这两个选项都进行了基准测试,似乎无论优化器是打开还是关闭,通过指针传递的速度都快得多(正如预期的那样)。

虽然有趣的是,如果优化器被关闭,按值传递会稍微快一点,如下所示:

?  rustTest$  rustc --test -O passByTest.rs
?  rustTest$  ./passByTest --bench         

running 2 tests
test ptrBench   ... bench:         1 …
Run Code Online (Sandbox Code Playgroud)

performance pass-by-reference pass-by-value rust

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

Singleton,shared_ptr,原始指针或其他指针?

class GameBoy{

  public:
    GameBoy()
      :cart(new Cartridge()),
        mmu(new MMU(cart)),
        cpu(new CPU(mmu))
    {}

    void step(); //steps through one instruction
    const CPU::State &getCPUState() const noexcept;
    void loadROM(std::string fileName);

  private:
    std::shared_ptr<Cartridge> cart;
    std::shared_ptr<MMU> mmu;
    std::shared_ptr<CPU> cpu;

  };
Run Code Online (Sandbox Code Playgroud)

我正在编写一个Game Boy模拟器,这个类是Qt GUI将与之交互的.也就是说,对于GUI中绘制的每个帧,它将调用GameBoy :: step().显然,由于我还没有开始在GPU上工作,所以还没有完成.

我目前正在质疑这个设计,因为这3个类(Cartridge,CPU,MMU)只会被实例化一次.单身是一个比这更好的设计,还是这个当前的设计是最好的?

如果这个最好,我应该继续使用shared_ptr吗?我已经读到应该谨慎使用它,但是在这里,它似乎有意义,因为所有3个类都相互依赖.

非常感谢你!

编辑:人们问我为什么要使用指针.从初始列表中可以看出,MMU需要对Cartridge的引用,CPU需要对MMU的引用.

Cartridge将由GameBoy :: loadROM()和大多数MMU方法使用.我同意MMU可能不需要由GameBoy拥有,但它将在CPU和GPU之间共享(我认为).

在下面的示例中,是否有更好的替代购物车共享指针?

类之间的示例用法:

byte MMU::readByte(word address) {
            ....
            value = cart->readROM(address);
            ....
        }

void GameBoy::loadROM(std::string fileName){
            cart->loadROM(fileName);
}
Run Code Online (Sandbox Code Playgroud)

编辑2:谢谢大家!我有一个最后的问题.如果GPU和CPU都使用MMU并且GameBoy同时使用GPU和CPU,那么哪种设计更好:

class GameBoy{

public:
GameBoy()
 : CPU(&mmu), gpu(&mmu)
...

private:
MMU mmu;  //never used by GameBoy
CPU cpu; …
Run Code Online (Sandbox Code Playgroud)

c++ design-patterns shared-ptr c++11

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

Flask RESTful API并为特定用户进行身份验证

我对RESTful API比较新,所以我当然不能正确设计它.

我想根据正在进行身份验证的人从/ api/users/[user_id]返回JSON用户对象的不同子集.因此,如果用户"alice"试图访问/ api/users/alice,她将获得更多她的信息(例如私人设置等),而不是用户"bob",她只是简单地获取她的公开个人资料.

我目前正在使用flask_restful和httpbasicauth.现在我有以下内容:

class UserAPI(flask_restful.Resource):
    @g.auth.login_required
    def get(self, username):
        # here is where I want to get the HTTPBasicAuth username
        # to determine how much data to return

        user = User.objects(username=username).exclude('password').first()

        if user is not None:
            return user.to_json()
        else:
            flask_restful.abort(404, message='User not found: ' + username) 
Run Code Online (Sandbox Code Playgroud)

问题是我似乎无法找到一种清晰的方法来获取HTTP基本身份验证数据.我知道我可以解析请求并解码base-64数据,但我觉得我不应该这样做.或者,更好的是,找到一种方法将user_id从/ api/users/[user_id]传递到login_required注释中.

我觉得这将是一个非常常见的用例,所以我无法弄清楚为什么我在这个领域找不到任何东西.我设计这个完全错了吗?

非常感谢!

python rest restful-authentication flask flask-restful

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