ConductedForce
ConductedForce

Reputation: 194

The breakpoint will not currently be hit. No executable code of the debbuger's target code type is

Intro: Code does not work in Release mode. Works in Debug.

This shows on one of my breakpoints:

The breakpoint will not currently be hit. No executable code of the debbuger's target code type is

Code spot is:

void Font::operator<<(std::string s)
{
    this->printf(s); // this line
}

This method is called like this:

float oneframe;
oneframe = (double)elapsed/ 1000000.0;

float ffps =1. / oneframe;
int fps = ffps;
char txt[200];
sprintf(txt, "%d FPS", fps);
font << txt; // displays text

Printf is:

void Font::printf(std::string s)
{
    UINT lines = 0;
    std::vector<float> offsetX;
    float offsetY=0;
    UINT length = s.size();
    XMMATRIX M = XMMatrixScaling(m_scaling.x, m_scaling.y, m_scaling.z)*
        XMMatrixTranslation(m_translation.x, m_translation.y, m_translation.z);
    float fontLength=0;
    float fontHeight = 60.0f / windowHeight;
    float fontWidth = 60.0f / windowWidth * 0.6f;

    m_deviceContext->VSSetShader(m_vertexShader, 0, 0);
    m_deviceContext->IASetInputLayout(m_inputLayout);
    m_deviceContext->PSSetShader(m_pixelShader, 0, 0);
    m_deviceContext->PSSetShaderResources(0, 1, &m_texture);
    m_deviceContext->PSSetSamplers(0, 1, &m_sampler);
    m_deviceContext->OMSetDepthStencilState(m_dsOff, 1);

    if (m_anchor != TOP_LEFT) 
    {
        float offset = 0;
        for (int i = 0; i < length; i++)
        {
            offset += m_kerning*widthMap[s[i]];
            if (s[i] == '\n' || s[i] == '\r' || i == length - 1)
            {
                offsetX.push_back(offset);
                offset = 0;
            }
        }
    }
    for (int i = 0; i < length; i++)
    {
        XMFLOAT3 TL(-1, 1, 0), BR(1, -1, 0);
        XMVECTOR vTL, vBR;
        if (s[i] == '\n' || s[i] == '\r')
        {
            fontLength = 0;
            lines++;
            continue;
        }
        switch (m_anchor)
        {
        default:
        case TOP_LEFT:
            vTL = XMVector3TransformCoord(XMLoadFloat3(&XMFLOAT3(fontLength, -m_leading*lines, 0)), M);
            vBR = XMVector3TransformCoord(XMLoadFloat3(&XMFLOAT3(fontWidth + fontLength, -m_leading*lines - fontHeight, 0)), M);
            break;
        case TOP_RIGHT:
            vTL = XMVector3TransformCoord(XMLoadFloat3(&XMFLOAT3(fontLength - offsetX[lines], -m_leading*lines, 0)), M);
            vBR = XMVector3TransformCoord(XMLoadFloat3(&XMFLOAT3(fontWidth + fontLength - offsetX[lines], -m_leading*lines - fontHeight, 0)), M);
            break;
        case BOTTOM_LEFT:
            offsetY = m_leading*offsetX.size();
            vTL = XMVector3TransformCoord(XMLoadFloat3(&XMFLOAT3(fontLength, -m_leading*lines+ offsetY, 0)), M);
            vBR = XMVector3TransformCoord(XMLoadFloat3(&XMFLOAT3(fontWidth + fontLength, -m_leading*lines - fontHeight+ offsetY, 0)), M);
            break;
        case BOTTOM_RIGHT:
            offsetY = m_leading*offsetX.size();
            vTL = XMVector3TransformCoord(XMLoadFloat3(&XMFLOAT3(fontLength - offsetX[lines], -m_leading*lines + offsetY, 0)), M);
            vBR = XMVector3TransformCoord(XMLoadFloat3(&XMFLOAT3(fontWidth + fontLength - offsetX[lines], -m_leading*lines - fontHeight + offsetY, 0)), M);
            break;
        case CENTER:
            {
                offsetY = m_leading*offsetX.size() / 2;
                float halfOffsetx = offsetX[lines] / 2;
                vTL = XMVector3TransformCoord(XMLoadFloat3(&XMFLOAT3(fontLength - halfOffsetx, -m_leading*lines + offsetY, 0)), M);
                vBR = XMVector3TransformCoord(XMLoadFloat3(&XMFLOAT3(fontWidth + fontLength - halfOffsetx, -m_leading*lines - fontHeight + offsetY, 0)), M);
                break; 
            }
        }
        XMStoreFloat3(&TL, vTL);
        XMStoreFloat3(&BR, vBR);
        assert(updateBuffer(TL, BR, fontMap[s[i]]));
        UINT stride, offset;
        stride = sizeof(SimpleVertex);
        offset = 0;
        m_deviceContext->IASetVertexBuffers(0, 1, &m_vertexBuffer, &stride, &offset);
        m_deviceContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
        m_deviceContext->Draw(6, 0);
        fontLength += m_kerning*widthMap[s[i]];
    }
    m_deviceContext->OMSetDepthStencilState(m_dsOn, 1);
}

Here's where it gets weird. I get this notification while in Release mode. The code above completely works, in Debug. For whatever reason, it does not work when I switch to Release. I've checked the txtvariable that is being sent to the function, it has text. To me, it seems as if the code has somehow been optimized out or something.

I have also deleted everything in the Debug and Release folders and did a fresh Build. Nothing. I've tested the executables without running from VS, same result. Debugging in Release shows that there is text in txt but I can't determine what happens as the debugger seems to float right over font << txt.

Upvotes: 0

Views: 424

Answers (1)

ConductedForce
ConductedForce

Reputation: 194

I did find out the answer. There is an assert used in printf near the end. Asserts do not run in Release. Only in debug.

Upvotes: 0

Related Questions