标签: debugging

怎么应该使用strace?

一位同事曾告诉我,当Linux上的所有内容都无法调试时,最后一个选项是使用strace.

我试图学习这个奇怪工具背后的科学,但我不是系统管理大师,我没有真正得到结果.

所以,

  • 究竟是什么,它做了什么?
  • 如何以及在何种情况下使用它?
  • 如何理解和处理输出?

简而言之,简单来说,这些东西是如何工作的?

linux debugging strace

266
推荐指数
8
解决办法
27万
查看次数

#if RELEASE会像#if DEBUG一样在C#中工作吗?

在我看过#if编译器指令的所有例子中,他们使用"DEBUG".我可以以相同的方式使用"RELEASE"来排除在调试模式下编译时我不想运行的代码吗?我想用这个块包围的代码会发出一堆电子邮件,我不想在测试时不小心将它们发送出去.

.net c# debugging

263
推荐指数
6
解决办法
12万
查看次数

如何调试MySQL上的锁定等待超时?

在我的生产错误日志中,我偶尔会看到:

SQLSTATE [HY000]:常规错误:1205超出锁定等待超时; 尝试重新启动事务

我知道当时哪个查询正在尝试访问数据库,但有没有办法找出哪个查询在那个精确时刻有锁定?

mysql debugging innodb transactions acid

260
推荐指数
9
解决办法
39万
查看次数

从Python代码中的方法打印当前调用堆栈

在Python中,如何从方法中打印当前调用堆栈(用于调试目的).

python debugging stack-trace

257
推荐指数
6
解决办法
11万
查看次数

JavaScript:有没有办法让Chrome破解所有错误?

我正在寻找Chrome中与Firebug"破解所有错误"功能相当的功能.在"脚本"选项卡中,Chrome有一个"暂停所有异常",但这与打破所有错误并不完全相同.

例如,在使用以下代码加载页面时,我希望Chrome能够突破foo.bar = 42.相反,即使启用"暂停所有异常",我也无法获得预期的结果.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <script type="text/javascript">

            function doError() {
                foo.bar = 42;
            }

            window.onload = function() {
                try {
                    doError();
                } catch (e) {
                    console.log("Error", e);
                }
            }
        </script>
    </head>
    <body>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

您可以尝试在此页面上粘贴的代码或使用此jsFiddle.

javascript debugging webkit google-chrome

251
推荐指数
3
解决办法
45万
查看次数

发布生成.pdb文件,为什么?

为什么Visual Studio 2005 .pdb在发布时编译时会生成文件?我不会调试发布版本,为什么它们会生成?

.net debugging debug-symbols visual-studio pdb-files

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

远程调试Java应用程序

我有一个在linux机器上运行的java应用程序.我使用以下代码运行java应用程序:

java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n
Run Code Online (Sandbox Code Playgroud)

我在这台Linux机器上为TCP打开了端口4000.我在Windows XP机器上使用eclipse并尝试连接到此应用程序.我也在windows中打开了端口.

两台机器都在局域网上,但我似乎无法将调试器连接到Java应用程序.我究竟做错了什么?

java debugging remote-debugging

244
推荐指数
5
解决办法
38万
查看次数

抛出异常时中断

Visual Studio has an option to break automatically into the debugger when an unhandled exception is thrown, does Eclipse have similar functionality?

java eclipse debugging eclipse-jdt

241
推荐指数
2
解决办法
7万
查看次数

你如何调试React Native?

当应用程序在应用程序模拟器中运行时,如何使用React Native调试其React代码?

debugging android ios react-native

241
推荐指数
23
解决办法
16万
查看次数

为什么这个for循环在某些平台上退出而不在其他平台上退出?

我最近开始学习C,我正在以C为主题.我正在玩循环,我遇到了一些我不知道如何解释的奇怪行为.

#include <stdio.h>

int main()
{
  int array[10],i;

  for (i = 0; i <=10 ; i++)
  {
    array[i]=0; /*code should never terminate*/
    printf("test \n");

  }
  printf("%d \n", sizeof(array)/sizeof(int));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在我的运行Ubuntu 14.04的笔记本电脑上,此代码不会中断.它运行完成.在我学校的运行CentOS 6.6的计算机上,它运行良好.在Windows 8.1上,循环永远不会终止.

更奇怪的是,当我将for循环条件编辑为:时i <= 11,代码只会在运行Ubuntu的笔记本电脑上终止.它永远不会在CentOS和Windows中终止.

任何人都可以解释内存中发生的事情以及运行相同代码的不同操作系统为什么会产生不同的结果?

编辑:我知道for循环超出范围.我是故意这样做的.我无法弄清楚不同操作系统和计算机之间的行为有何不同.

c debugging buffer-overflow undefined-behavior

240
推荐指数
9
解决办法
2万
查看次数