使用Visual Studio 2010调试与汇编代码链接的C代码

时间:2011-11-20 16:33:48

标签: c debugging assembly

我试图将程序集中开发的一个函数与.s扩展名链接到C代码主程序main.c

我需要调试汇编例程来查看我的堆栈和寄存器。 我该怎么办?

int main() {
    char str[] = "remembering toUpperSelective exercise..";
    const char* findChars = "re";

    int result = toUpperSelective(str, findChars);
    printf("Result Expected is %d and got %d \n", 14, result);
    printf("Printing result: %s \n", str);
    getchar();
    return 0;
}

我怎么说编译器在X位置搜索并停止抛出此错误? (链接)

3 个答案:

答案 0 :(得分:0)

您当然可以在C代码中使用汇编语言命令(单个或在块中)。查看用于运行汇编语言指令的ASM C函数。

我不确定断点是否可以在内联汇编语言中使用。你可以做的是定义一个常规函数。在该函数内部,使用ASM Assembly块来编写程序集。如果代码很复杂并且您确实想要调试它,那么测试将单独使用ASM语言。可能你需要一个适用于你正在使用的处理器的模拟器。你能指出一下ASM到底会做些什么吗?

我知道这不是正确的答案,但至少会让你走上正轨。

This thread might be somewhat helpfull

答案 1 :(得分:0)

Visual Studio没有使用汇编程序。这意味着您要么使用C编译器的内联汇编程序功能,要么安装单独的汇编程序。

如果使用单独的汇编程序,则必须将源添加到项目中,并为其调用具有正确标志的汇编程序的自定义构建规则。然后,Visual Studio将能够处理实际链接。至于调试,Visual Studio调试器能够显示来自目标代码的汇编代码,但是您选择的汇编器必须以Visual Studio可以识别的格式输出调试信息,以便能够正确地查看所有标签等。 / p>

答案 2 :(得分:0)

好的。 我在visual studio上尝试这样做,但在尝试使用insight调试器之前,在Windows平台上没有任何成功。

在此之前我在StackOverflow中开始了另一个问题,但我已经实现了我想要的。 该主题是here

我将程序集与C代码链接并在Insight C + My Assembly例程上进行调试。 谢谢!