我有一个Eclipse的崩溃转储,想报告一个错误.对于错误报告,我想指定崩溃的Eclipse版本,因为它可能与问题有关.
不幸的是,我通常的方式不起作用,lm vm不显示版本信息:
0:048> lm vm eclipse
start end module name
00000000`00400000 00000000`0044f000 eclipse (deferred)
Image path: C:\Program Files\eclipse\eclipse.exe
Image name: eclipse.exe
Timestamp: Wed Feb 04 14:12:28 2015 (54D21ABC)
CheckSum: 00050686
ImageSize: 0004F000
File version: 0.0.0.0
Product version: 0.0.0.0
File flags: 0 (Mask 0)
File OS: 0 Unknown Base
File type: 0.0 Unknown
File date: 00000000.00000000
Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4
Run Code Online (Sandbox Code Playgroud)
时间戳与Eclipse的发布日期并不完全相关,所以我想知道这是官方发布还是每晚构建.
是否有另一种方法可以确定转储中Eclipse的版本号?
我开始使用WinDbg来调试VB6运行时错误,但无法让它真正起作用,我只需要知道错误的来源(错误来自的过程).
我创建了一个小应用程序来测试并使它抛出溢出运行时错误,如下所示:
Private Sub Command1_Click()
Dim a As Byte
a = 1000
End Sub
Run Code Online (Sandbox Code Playgroud)
我通过选中"创建符号调试信息"选项编译它以创建PDB文件.
然后我将应用程序附加到WinDbg并单击按钮以抛出错误,但是当我检查调用堆栈时,我没有找到任何Command1_Click程序的跟踪.我得到的是以下内容:
0:001> ~* k
0 Id: 56c.173c Suspend: 1 Teb: 7ffde000 Unfrozen
ChildEBP RetAddr
0012ea08 7e419418 ntdll!KiFastSystemCallRet
0012ea40 7e4249c4 USER32!NtUserWaitMessage+0xc
0012ea68 7e43a956 USER32!InternalDialogBox+0xd0
0012ed28 7e43a2bc USER32!SoftModalMessageBox+0x938
0012ee78 7e43a10b USER32!MessageBoxWorker+0x2ba
0012eee4 729af829 USER32!MessageBoxIndirectA+0xb8
WARNING: Stack unwind information not available. Following frames may be wrong.
0012ef24 729af6a5 MSVBVM60!IID_IVbaHost+0x411e9
0012ef4c 729af9a0 MSVBVM60!IID_IVbaHost+0x41065
0012ef7c 729a3d68 MSVBVM60!IID_IVbaHost+0x41360
0012efe0 729a3db6 MSVBVM60!IID_IVbaHost+0x35728
0012f000 72a0c411 MSVBVM60!IID_IVbaHost+0x35776
0012f01c 72a0c6f3 MSVBVM60!_vbaOnGoCheck+0xba
0012f05c 7c9032a8 …Run Code Online (Sandbox Code Playgroud) 我创建了一个示例.net应用程序,该应用程序使用log4net编写日志。它仅用于测试log4net库。
但是,当我通过Windows任务管理器创建故障转储文件,然后使用WinDbg打开它时,输入命令“ lm”后找不到模块“ log4net”。
为什么命令“ lm”没有列出dll“ log4net.dll”?
这是WinDbg的输出:
0:009> lmf
start end module name
00000000`003e0000 00000000`003e8000 test_log4net C:\wangzhengzhang\Demo\demo\test_csharp\test_log4net\bin\Debug\test_log4net.exe
00007fff`1a260000 00007fff`1b748000 mscorlib_ni C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\mscorlib\e96b4590c579d08edc2e60cc3e5ae997\mscorlib.ni.dll
00007fff`1b750000 00007fff`1c136000 clr C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
00007fff`1c380000 00007fff`1c48e000 clrjit C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clrjit.dll
00007fff`1c490000 00007fff`1c587000 MSVCR120_CLR0400 C:\WINDOWS\SYSTEM32\MSVCR120_CLR0400.dll
00007fff`1c590000 00007fff`1c62d000 mscoreei C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscoreei.dll
00007fff`1c630000 00007fff`1c696000 MSCOREE C:\WINDOWS\SYSTEM32\MSCOREE.DLL
00007fff`2e590000 00007fff`2e59a000 VERSION C:\WINDOWS\SYSTEM32\VERSION.dll
00007fff`30cc0000 00007fff`30cf3000 rsaenh C:\WINDOWS\system32\rsaenh.dll
00007fff`30db0000 00007fff`30dc7000 CRYPTSP C:\WINDOWS\SYSTEM32\CRYPTSP.dll
00007fff`30dd0000 00007fff`30ddb000 CRYPTBASE C:\WINDOWS\SYSTEM32\CRYPTBASE.dll
00007fff`31280000 00007fff`312ab000 bcrypt C:\WINDOWS\SYSTEM32\bcrypt.dll
00007fff`31340000 00007fff`3134f000 kernel_appcore C:\WINDOWS\System32\kernel.appcore.dll
00007fff`313d0000 00007fff`3146c000 msvcp_win C:\WINDOWS\System32\msvcp_win.dll
00007fff`31470000 00007fff`31565000 ucrtbase C:\WINDOWS\System32\ucrtbase.dll
00007fff`317f0000 00007fff`3180e000 win32u C:\WINDOWS\System32\win32u.dll
00007fff`318c0000 00007fff`31a42000 …Run Code Online (Sandbox Code Playgroud) 
任何人都可以解决这个问题我正在运行 flutter pub run flutter_launcher_icons:main 但它对我不起作用
WinDbg 对 d 命令系列应用了范围限制。根据文档,限制为 256 MB。可以使用 L? 句法。
L? Size(带问号)的意思与 LSize 相同,只是 L? 大小删除调试器的自动范围限制。通常,范围限制为 256 MB,因为较大的范围是印刷错误。如果要指定大于 256 MB 的范围,则必须使用 L? 大小语法。
但是,我尝试做一个
du 3ddabac0+8 L 0n6518040
只有 6.5 MB 的文件,它说
Range error in 'du 3ddabac0+8 l 0n6518040.
我正在尝试创建一个程序,为演示目的生成非法指令异常.
我的问题似乎有一个简单的解决方案:
cmpxchgl %edx, %ecx
Run Code Online (Sandbox Code Playgroud)
但是编译器(FASM)不想在运行时给我一个异常,而是不想编译代码.它说"非法指令"(这可能是正确的,实际上很高兴警告我).
获取非法指令异常的任何解决方案对我来说都没问题,所以你可以
a)指向另一个简单编译代码的编译器
b)为我的命令应用解决方法
c)提出完全不同的命令(应该简单,首选oneliners)
我正在写一个不像我预期的那样工作的测试.
我需要使用一些抓取器,然后在测试运行时转储到屏幕上.
我怎么能这样做?如何回声,而不是用户如何抓取; 我可以使用抓取器,但我不知道如何在测试运行时回声.
这是我目前使用的一些代码:
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
excelApp.Workbooks.Open(path);
// Make the object visible.
excelApp.Visible = true;
Run Code Online (Sandbox Code Playgroud)
我知道工作簿打开了。
我正在使用 Visual Studio 2013。
我只想开发 JUnit 4 测试。在编写单元测试时,Eclipse 经常从junit.frameworkJUnit 3 中导入类。
这导致了各种问题,例如,当期望异常时,如果它在错误的包中,它就不会捕获它,如下所示:
import static org.junit.Assert.*;
import junit.framework.ComparisonFailure;
[...]
try
{
assertEquals(0, 1);
}
catch(ComparisonFailure cfe)
{
}
Run Code Online (Sandbox Code Playgroud)
很奇怪,如果我Ctrl+ Clickon ComparisonFailure,它说
未找到来源
此类的 JAR 属于容器“JUnit 4”[...]
也许有用的环境信息:
如何阻止 Eclipse 导入 JUnit 3 类?
我已经阅读了当我的构建路径中有 junit-4.3.1.jar 时,为什么 Eclipse 使用 JUnit 3?,但它已经很老了,可能不再适用于 Luna。另外,我的问题不在于运行测试,而在于实施测试。
我知道这一点const,并且volatile在 C++ 规范中被称为“cv 限定符”,例如[basic.type.qualifier]。
现在我有这段代码(godbolt)无法编译。
#include <string>
class Dummy
{
std::string member{"test"};
public:
std::string const && foo() &&
{ return std::move(member); }
};
int main()
{
Dummy d;
std::string s = d.foo();
}
Run Code Online (Sandbox Code Playgroud)
它无法编译,因为w它是一个 LValue 并且foo()仅针对 RValue 存在。这很好,也是意料之中的。
但让我们看一下错误消息:
<source>: In function 'int main()':
<source>:14:26: error: passing 'Dummy' as 'this' argument discards qualifiers [-fpermissive]
14 | std::string s = d.foo();
| ~~~~~^~
<source>:7:26: note: in call to 'const …Run Code Online (Sandbox Code Playgroud)