相关疑难解决方法(0)

如何逐步完成Python代码以帮助调试问题?

在Java/C#中,您可以轻松地逐步执行代码以跟踪可能出错的内容,而IDE使此过程非常用户友好.

你能以类似的方式追踪python代码吗?

python debugging

163
推荐指数
9
解决办法
21万
查看次数

main()真的是一个C++程序的开始吗?

C++标准中的$ 3.6.1/1节,

程序应包含一个名为main的全局函数,它是程序的指定开始.

现在考虑这段代码,

int square(int i) { return i*i; }
int user_main()
{ 
    for ( int i = 0 ; i < 10 ; ++i )
           std::cout << square(i) << endl;
    return 0;
}
int main_ret= user_main();
int main() 
{
        return main_ret;
}
Run Code Online (Sandbox Code Playgroud)

此示例代码执行我打算执行的操作,即进入main()应该是程序"开始" 的函数之前打印从0到9的整数平方.

我还用-pedantic选项GCC 4.5.0 编译它.它没有错误,甚至没有警告!

所以我的问题是,

这段代码真的符合标准吗?

如果它符合标准,那么它是否会使标准所说的无效?main()不是这个计划的开始!user_main()在执行之前执行main().

我知道要初始化全局变量main_ret,use_main()首先执行,但这是完全不同的事情; 关键是,它确实使标准中的引用语句$ 3.6.1/1无效,因为main() …

c++ program-entry-point standards-compliance entry-point

130
推荐指数
6
解决办法
2万
查看次数

gdb拆分视图与代码

我只是在gdb中调试一个程序,不知怎的,我发现了一个我以前从未见过或甚至没有听说过的新功能,除了给出命令之外,我还可以看到并浏览代码:

对此图片感到抱歉,但ttys没有截图.

这是什么?我做了什么,或者更具体地说,我怎样才能再次获得这种分屏模式?这个模式有名称,还是我可以阅读的有关如何使用它的地方?

gdb

101
推荐指数
7
解决办法
6万
查看次数

切换到gdb中的程序集

在gdb中调试C或C++程序时是否有任何方法可以切换到程序集?(鉴于所有源文件及其相应的汇编文件都可用)

assembly gdb

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

gdb布局asm在mac上不起作用?

$ gdb test

(gdb) start
Breakpoint 1 at 0x100000ec8
Starting program: /private/tmp/test 
Reading symbols for shared libraries +. done    
Breakpoint 1, 0x0000000100000ec8 in main ()

(gdb) layout asm
Undefined command: "layout".  Try "help".

$ gdbtui
-bash: gdbtui: command not found
Run Code Online (Sandbox Code Playgroud)

layoutgdbtui不是供Mac OS X?有哪些替代方案?

macos gdb

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

信号处理程序返回哪里?

假设在接收和处理信号时,在main方法内正在运行一个进程。信号处理程序完成后,该过程是否返回到接收信号的main中的行,还是返回到信号调用?

PS:我知道自己可以快速进行测试,但是当我无法使用PC时,这种想法就发生了。

谢谢。

c linux

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

GDB单步执行汇编并显示将要执行的下一条指令。

使用gdb debbuger,我可以单步执行什么命令并显示将要执行的下一条指令?我对windbg很熟悉,该操作非常简单。

因此,例如,我具有以下功能,当我通过si进入代码时,我想显示下一条将要执行的指令,而不必通过反汇编进行完全反汇编。我该怎么做?

Dump of assembler code for function isEven:
   0x0000000100000f20 <+0>: push   %rbp
   0x0000000100000f21 <+1>: mov    %rsp,%rbp
   0x0000000100000f24 <+4>: mov    $0x2,%eax
   0x0000000100000f29 <+9>: mov    %edi,-0x4(%rbp)
=> 0x0000000100000f2c <+12>:    mov    -0x4(%rbp),%edi
   0x0000000100000f2f <+15>:    mov    %eax,-0xc(%rbp)
   0x0000000100000f32 <+18>:    mov    %edi,%eax
   0x0000000100000f34 <+20>:    cltd
   0x0000000100000f35 <+21>:    mov    -0xc(%rbp),%edi
   0x0000000100000f38 <+24>:    idiv   %edi
   0x0000000100000f3a <+26>:    cmp    $0x0,%edx
   0x0000000100000f3d <+29>:    jne    0x100000f4f <isEven+47>
   0x0000000100000f43 <+35>:    movl   $0x1,-0x8(%rbp)
   0x0000000100000f4a <+42>:    jmpq   0x100000f56 <isEven+54>
   0x0000000100000f4f <+47>:    movl   $0x0,-0x8(%rbp)
   0x0000000100000f56 <+54>:    mov    -0x8(%rbp),%eax …
Run Code Online (Sandbox Code Playgroud)

c debugging gdb

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