小编cha*_*esw的帖子

Visual Studio运行错误的代码

我已经找到并发布了VS 2013,它将运行已打开的VS的最新实例的代码.这令人沮丧,因为我有时必须看看同一个大项目的两个版本之间的差异.

如何重现:(我正在使用的例子可以在github上找到:https://github.com/charles1024/VS2013-Crossover-Bug)

我有两个相同解决方案的副本,我将其称为Hello1和Hello2.

Hello1在Default.aspx中有一行,它将标签(lblHelloWorld)的文本设置为"Hello World".

Hello2有这一行,但它被注释掉了.

重现的步骤(重要的是要完全遵循):

  1. 在Hello1中打开解决方案
  2. 开始调试Hello1
  3. 请注意,左上角有一个带有"Hello World"文本的标签
  4. 停止调试Hello1
  5. 在Hello 2中打开解决方案
  6. 再次开始调试Hello1
  7. 观察到"Hello World"不再显示在左上角.

可以通过在某处更改设置来解决这个问题,还是实际上是一个错误?有没有解决方法?

笔记:

有些人建议更改为正在运行的端口.我尝试了这个并没有任何区别.该解决方案在其原始端口上运行,但仍然从VS的第二个实例运行代码.

*更正* 我刚刚检查过它,端口号似乎已修复它.显然只是保存Hello2并没有使端口更改生效.你必须关闭所有东西并重新打开.

visual-studio-2013

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

如何从另一个可执行文件调用二进制文件的 _start?

我有一个 elf64 可执行文件 foo,我想“手动”加载和启动它,并能够从中调用其他函数。我如何将它加载到内存中,然后设置指令指针来运行它。

foo不是共享对象库,它是一个可执行文件,具有导出的某些功能,就好像它是 SO。

所以,有几个问题:

  1. 我在哪里将二进制文件加载到内存中以便可执行?堆?堆?
  2. 如何设置指令指针以从我的程序更改为 foo 的入口点?

例如,我有以下内容,但它存在段错误:

#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <elf.h>

#define ELF_SIZE 10000

int main(int argc, char **argv)
{

    FILE *fp;
    void *   entry_point ;
    Elf64_Ehdr *elfHdr;
    uint8_t *buffer = malloc(ELF_SIZE);

    fp = fopen("./foo", "rb");

    int read_size = fread(buffer, 1, ELF_SIZE, fp);
    if (read_size == ELF_SIZE)
    {
        printf("loaded ELF onto heap
\n");
    } else
    {
        printf("read failed: %d\n", read_size);
        return 0;
    }
    printf("elf loaded at %x\n", buffer);

    elfHdr …
Run Code Online (Sandbox Code Playgroud)

c assembly elf

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

标签 统计

assembly ×1

c ×1

elf ×1

visual-studio-2013 ×1