标签: release-mode

Android apk调试模式工作正常,但发布模式提供了太多警告

我正试图从eclipse获得一个签名的APK.我有一个可调试的apk版本,工作正常.现在,当我尝试使用Eclipse ADT进行编译和签名时,我会收到许多警告,其中大部分是警告can't find superclass or interface some.package.Class.所以,我提到这个,这个和其他许多不幸的是我无法到达的任何地方!

我也得到Note: there were 314 duplicate class definitions.警告

我的progaurd-project.txt早先没有动过.所以,我-libraryjars /libs/lib-name/EcliseProject/libs/文件夹中的每个罐子添加了.所以我想出了以下内容:

-libraryjars /libs/android-support-v4.jar -libraryjars /libs/apache-mime4j-core-0.7.2.jar -libraryjars /libs/gcm.jar -libraryjars /libs/httpclient-4.3.3.jar -libraryjars /libs/httpcore-4.3.2.jar -libraryjars /libs/httpmime-4.3.3.jar -libraryjars /libs/library.jar -libraryjars /libs/nineoldandroids-2.4.0.jar

到最后,我得到了1800多个警告,其中大多数都没有找到上面提到的超类或接口.所以,我得到了那些有这些类的罐子,并将它们放在/ lib /文件夹中,并添加了-libraryjars包括rt.jar等的条目.然后我得到了更多的警告,其中一些人说library class org.xmlpull.v1.XmlPullParser depends on program class java.lang.String.

我尝试添加-dontskipnonpubliclibraryclasses,添加一些-dontwarn等等.到目前为止没有任何工作.

在某些时候,我保持足够,-dontwarn以便制作apk,但它只是提起登录屏幕(第一个活动),一旦点击按钮就卡在那里.

我想我错过了一些非常基本的东西.这些天我一直在测试调试模式apk正常工作.为什么这个麻烦?请帮忙!!

eclipse android proguard adt release-mode

5
推荐指数
1
解决办法
540
查看次数

如果使用Debug dll,服务不会及时响应启动或控制请求

我试图在我的机器上部署Windows服务,但是当我试图启动它时,我得到了以下错误.

"Windows无法在本地计算机上启动'myService'.错误1053:服务没有及时响应启动或控制请求."

经过一些研究后,我发现我正在使用Debug选项来编写我的项目,当我将其更改为'Release'模式时,一切都很好并正常工作.我无法理解这种行为,所以我在网上搜索并发现了这个调试vs-release-in-net,但即便如此也无法解释为什么我的窗口服务很难启动,如果我使用调试模式的dll

如果有人能解释它,将有助于我了解这实际上是如何工作的感谢.

c# dll windows-services compilation release-mode

5
推荐指数
0
解决办法
1372
查看次数

Debug和Release之间的结果不同

我有一个问题,我的代码在将调试与发布进行比较时会返回不同的结果.我检查了两种模式都使用/ fp:exact,所以这不应该是问题.我对此的主要问题是完整的图像分析(它是一个图像理解项目)完全是确定性的,其中绝对没有任何随机性.

另一个问题是我的发布版本实际上总是返回相同的结果(图像为23.014),而debug返回22到23之间的一些随机值,这不应该是.我已经检查过它是否与线程相关,但算法中唯一的多线程部分会为调试和发布返回完全相同的结果.

还有什么可能发生在这里?

Update1:我现在发现的代码负责此行为:

float PatternMatcher::GetSADFloatRel(float* sample, float* compared, int sampleX, int compX, int offX)
{
    if (sampleX != compX)
    {
        return 50000.0f;
    }
    float result = 0;

    float* pTemp1 = sample;
    float* pTemp2 = compared + offX;

    float w1 = 0.0f;
    float w2 = 0.0f;
    float w3 = 0.0f;

    for(int j = 0; j < sampleX; j ++)
    {
        w1 += pTemp1[j] * pTemp1[j];
        w2 += pTemp1[j] * pTemp2[j];
        w3 += pTemp2[j] * pTemp2[j];
    } …
Run Code Online (Sandbox Code Playgroud)

c++ openmp visual-studio-2010 release-mode debug-mode

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

函数'DLog'的隐式声明在C99中无效

我从这里使用了NSLog的宏版本,http://objdev.com/2014/06/debug-logging

像这样,

#ifdef DEBUG
#define DLog(...) NSLog(@"%s(%p) %@", __PRETTY_FUNCTION__, self, [NSString stringWithFormat:__VA_ARGS__])
#endif
Run Code Online (Sandbox Code Playgroud)

它工作正常,直到我将应用程序运行模式从更改DebugRelease.

现在我收到以下错误:

函数'DLog'的隐式声明在C99中无效.

我该如何解决这个问题?

我读了很多问题, 错误:'隐式声明函数'nslog'在C99'无效,ARC警告:函数'DLog'的隐式声明在C99中无效函数的隐式声明 - C99,但没有一个答案适用于我.

PS这个问题根本与CocoaLumberjack无关.

nslog release-mode ios

4
推荐指数
1
解决办法
6051
查看次数

Visual C++ express 2008:为什么它会在发布可执行文件的末尾放置空字节的megs?

最近我发现我的发布可执行文件(用msvc ++ express 2008制作)变得非常大.当我用十六进制查看器检查可执行文件时,我看到只有前300k字节包含有用数据,其余字节只有零 - 6兆字节的零字节.

debug built exe的大小为1MB,但发行版为6.5MB.

为什么MSVC++ express会做那些无用的事情?我该如何解决?

c++ size release-mode visual-c++

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

Visual C++ - 为什么要使用调试模式呢?

所以我刚刚遵循了为发布模式启用调试符号的建议,并在启用调试符号后,禁用优化并发现如果符号符合发布模式,断点确实有效,我发现自己在想...

  1. 调试模式的目的不是帮助您找到错误吗?
  2. 如果让bug漏过你,为什么还要使用Debug模式呢?

有什么建议?

c++ debugging release-mode visual-studio

3
推荐指数
2
解决办法
1023
查看次数

识别VisualStudio中的调试

我有一个有趣的问题.

是否可以识别程序集是否在Visual Studio中运行?

请查看以下代码.

if(FoundThatYouAreDebuggingInVisualStudio)
{
    Print "Hello"
} 
else 
{
    Print "Hi"
}
Run Code Online (Sandbox Code Playgroud)

上面的代码存在于.NET程序集(比如XYZ)中,它是在发布模式下构建的.用户正在调试他/她的应用程序(例如ABC),它引用了XYZ程序集.

我需要确定用户是否在Visual Studio中进行调试,或者他只是在运行ABC应用程序.

有任何想法吗?

-D

c# visual-studio-2010 release-mode visual-studio visual-studio-debugging

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

Interlocked.Increment vs lock in debug vs release mode

我正在测试我的计算机架构上的行为Interlocked.Incrementlock行为,因为我阅读了本文中的以下几行。

正如用 Interlocked.Increment 重写的那样,该方法应该执行得更快,至少在某些架构上是这样。

使用以下代码,我确信在我的项目中检查锁是值得的。

var watch = new Stopwatch();
var locker = new object();
int counter = 0;

watch.Start();
for (int i = 0; i < 100000000; i++)
{
    lock (locker)
    {
        counter++;
    }
}
watch.Stop();
Console.WriteLine(watch.Elapsed.TotalSeconds);

watch.Reset();
counter = 0;

watch.Start();
for (int i = 0; i < 100000000; i++)
{
    Interlocked.Increment(ref counter);
}
watch.Stop();
Console.WriteLine(watch.Elapsed.TotalSeconds);
Run Code Online (Sandbox Code Playgroud)

我越来越有近似值稳定的结果2.4S用于锁定和1.2秒的互锁。然而,我惊讶地发现在发布模式下运行此代码仅将 Interlocked 的值提高到大约0.7 秒,并且锁定时间保持不变。这是为什么?在释放模式下锁定不是互锁时如何优化互锁?

c# locking interlocked release-mode debug-mode

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

如何在发布模式下自动注释行?

我需要在调试模式下将某些代码行"激活",并在发布模式下忽略.有没有办法做这样的事情:

#include <iostream>
using namespace std;

#ifdef _TEST_
#define _cerr cerr
#else
#define _cerr // cerr
#endif

int main() {
   _cerr << "TEST message" << endl;
}
Run Code Online (Sandbox Code Playgroud)

因此,当_TEST_未定义时,会对某些行进行注释或从代码中删除.我知道评论是在其余的之前处理的,所以这段代码是错误的.但是,如何在不明确使用#ifdefs的情况下获得我需要的行为?

c++ debugging release release-mode c-preprocessor

2
推荐指数
2
解决办法
443
查看次数

使用DirectXMath中的XMVECTOR作为类成员仅在发布模式下导致崩溃?

我一直在尝试使用XMVECTOR作为边界框的类成员,因为我做了很多计算,但是每帧只使用一次XMFLOAT3,所以边界框有一个方法让我在XMFLOAT3中居中,否则它保留在XMVECTOR中;该类用__declspec(align(16))进行处理,并在调试模式下工作.但是在Release模式下,它崩溃了我设置的东西:

    Box& Box::operator=(const Box& box)
    {
        _center = box._center;
        _extents = box._extents;
        return *this;
    }
Run Code Online (Sandbox Code Playgroud)

每当我这样做:

Box A;

Box B;

A = B;
Run Code Online (Sandbox Code Playgroud)

它崩溃,给我0xC0000005:访问冲突读取位置0x00000000.当我将其创建为指针时,它也会崩溃:

Box* A = new Box();
Run Code Online (Sandbox Code Playgroud)

这是构造函数:

    Box::Box()
    {
        center = XMVectorZero();
        extents = XMVectorSplatOne();
    }
Run Code Online (Sandbox Code Playgroud)

再次,这在调试模式下工作正常,但在Release中它崩溃了.什么样的Release模式可以改变,会产生无效的代码?除了将盒子对齐到16个字节之外,我还需要做其他事情吗?

c++ simd release-mode directxmath

2
推荐指数
1
解决办法
1408
查看次数